variable is not declared it may be inaccessible due to its protection level

My VB skills are not the best, and this problem has had me stumped for a few days.

In the list of controls shown in Visual Studio that are not defined in the code behind, I can “mouseover” them and the tooltip text pops right up.




Similar questions:

This one had no solution – ‘var_name’is not declared. It may be inaccessible due to its protection level.’ in debug mode

This one said the solution was in the web.config, but I don’t understand where/how – BC30451: ‘MailValidation’ is not declared. It may be inaccessible due to its protection level

This one was a misspelled word – error: inaccessible due to its protection level

Update – Here is another problem that might be a clue to what my problems are:

In my Tools.vb module, I have a class to access LDAP.

The namespace for the tools class is given in the login.aspx.vb code, yet login code does not recognize the tools class.

missing tools


Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

Pay close attention to the first part of the error: “variable is not declared”

Ignore the second part: “it may be inaccessible due to its protection level”. It’s a red herring.

Some questions… (the answers might be in that image you posted, but I can’t seem to make it larger and my eyes don’t read that small of print… Any chance you can post the code in a way these older eyes can read it? Makes it hard to know the total picture. In particular I am suspicious of your Page directives.)

We know that 1stReasonTypes is a listbox, but for some reason it seems like we don’t know WHICH listbox. This is why I want to see your page directives.

But also, how are you calling the private method FormRefresh()? It’s not an event handler, which makes me wonder if you are trying to reference a listbox in a form that is not handled properly in this code behind.

You may need to find the control 1stReasonTypes. Try maybe putting your listbox inside something like

<div id="MyFormDiv" runat="server">.....</div>

then in FormRefresh(), do a…
Dim 1stReasonTypesNew As listbox = MyFormDiv.FindControl("1stReasonTypes")

Or use an existing control, object, or page instead of a div. More info on FindControl:

But no matter how you slice it, there is something funky going here such that 1stReasonTypes doesn’t know which exact listbox it’s supposed to be.

Method 2

I have suffered a similar problem, with a Sub not accessible in runtime, but absolutely legal in editor. It was solved by changing destination Framework from 4.5.1 to 4.5. It seems that my IIS only had 4.5 version.


Method 3

If I remember correctly, this is the default property for controls.

Can you try by going into Design-View for the admin_reasons that contains the specified Control, then changing the control’s Modifiers property to Public or Internal.

Method 4

I had a similar issue to this. I solved it by making all the projects within my solution target the same .NET Framework 4 Client Profile and then rebuilding the entire solution.

Method 5

I got this error briefly after renaming the App_Code folder. Actually, I accidentally dragged the whole folder to the App_data folder. VS 2015 didn’t complain it was difficult to spot what had gone wrong.

Method 6

I have found that you have to comment out the namespace wrapping the the class at time when moving between version of Visual Studio:

‘Namespace FormsAuth

‘End Namespace

and at other times, I have to uncomment the namespace.

This happened to me several times when other developers edited the same solution using a different version of VS and/or I moved (copied) the solution to another location

Method 7

This error occurred for me when I mistakenly added a comment following a line continuation character in VB.Net. I removed the comment and the problem went away.

All methods was sourced from or, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Notify of

Inline Feedbacks
View all comments
Would love your thoughts, please comment.x