VBA "Compile Error: Label not defined"
Solution 1
GoTo
will try and transfer the code execution to a different position in the current Subroutine with the given label.
Specifically, GoTo FunctionNotValidVarType
will try and execute the line:
FunctionNotValidVarType: 'Do stuff here
which doesn't exist in your current code.
If you want to call another function use Call FunctionNotValidVarType
Solution 2
Remove the word GoTo
GoTo
tells the code to jump to a label, you want it to enter a new procedure, not go to a label
Solution 3
Remove Goto
from the call to your Sub()
If you really wanted to use a Goto
(and you shouldn't), you would
goto Label
Label:
where the label is defined by the trailing colon :
Admin
Updated on July 20, 2022Comments
-
Admin almost 2 years
I have a VBA macro which gave me that error message.
Sub Function1() ' Give the user macro options based on how fast or slow the computer ' is using advanced conditional compiling vuserChoice = MsgBox("This macro by default treats all numbers as decimals for maximum precision. If you are running this macro on an old computer, you may want to declare numbers as singles, to speed up the macro.") MsgBox ("Decimal: recommended for maximum precision. Also slower." & vbNewLine & "Long: not recommended. Rounds to nearest integer." & vbNewLine & "Single: not recommended. A lightweight double." & vbNewLine & "Integer: not recommended. Quick and low-precision.") If vuserChoice = "Decimal" Or "decimal" Then GoTo FunctionDecimal ElseIf vuserChoice = "Double" Or "double" Then GoTo FunctionDouble ElseIf vuserChoice = "Single" Or "single" Then GoTo FunctionSingle ElseIf vuserChoice = "Long" Or "long" Then GoTo FunctionLong Else GoTo FunctionNotValidVarType End If ' MEeff = measure of efflux due to crudely purified HDL in scintillation MsgBox "For additional information about this macro:" & vbNewLine & "1. Go to tab Developer" & vbNewLine & "2. Select Visual Basic or Macro." & vbNewLine & "See the comments or MsgBoxes (message boxes)." End Sub
The offending line is:
GoTo FunctionNotValidVarType
I have the function
FunctionNotValidVarType
below this code. I have it as:Public Sub FunctionNotValidVarType() MsgBox "VarType " & VarType & " is not supported. Please check spelling." End Sub
What do I need to do to let the first function recognize
FunctionNotValidVarType
? Thanks. -
SierraOscar almost 9 yearsYou don't even need the word
Call
it's just a throwback from legacy VB code. -
kaybee99 almost 9 yearsYes, but I still use it to make it totally clear I'm calling another function
-
Uri Goren almost 9 yearsThere is a huge difference between calling a subroutine and the
GoTo
statement. after the subroutine we've just call ended, the execution continues from the line we called theSub
, where in theGoTo
scenario, it does not -
FreeMan almost 9 yearsOr, @ThomasShera, as S O (and others) pointed out, you can remove both the
goto
and thecall
and be just fine. -
Admin almost 9 years@FreeMan OK, thanks! I have a new error message now. Should I edit the original post?
-
FreeMan almost 9 yearsNope. The SE way is one question, one (accepted) answer. Start up a new question.
-
FreeMan almost 9 yearswell, you could use the
goto
, @cptn_hammer, in anOn Error Goto...
, but there are few other valid times... -
ale10ander almost 9 yearsI just added the link on shouldn't. I prefer to give people reasons why something is the way it is, rather than making sweeping proclamations. Information breeds understanding.
-
ale10ander almost 9 yearsAhh didn't look at your username :)