VBA "Kompilieren Fehler: Label nicht definiert"
Ich habe ein VBA-makro, welches mir diesen Fehlermeldung.
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
Die betreffende Zeile:
GoTo FunctionNotValidVarType
Habe ich die Funktion FunctionNotValidVarType
unter diesem code. Ich habe es als:
Public Sub FunctionNotValidVarType()
MsgBox "VarType " & VarType & " is not supported. Please check spelling."
End Sub
Was muss ich tun, um lassen Sie die erste Funktion erkennen FunctionNotValidVarType
? Danke.
InformationsquelleAutor Thomas Shera | 2015-06-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
GoTo
versuchen und die übertragung der code-Ausführung an eine andere position im aktuellen Unterprogramm mit der angegebenen Beschriftung.Insbesondere
GoTo FunctionNotValidVarType
werde versuchen, und führen Sie die Zeile:die nicht existieren in Ihrer aktuellen code.
Wenn Sie möchten, rufen Sie eine andere Funktion verwenden
Call FunctionNotValidVarType
Call
es ist nur eine Reminiszenz aus alten VB-code.Ja, aber ich habe immer noch verwenden Sie es, um es völlig klar, ich bin das aufrufen einer weiteren Funktion
Es gibt einen riesigen Unterschied zwischen dem Aufruf einer subroutine und der
GoTo
- Anweisung. nach dem Unterprogramm haben wir gerade Gespräch beendet, wird die Ausführung fortgesetzt aus der Zeile, die wir genanntSub
, wo in derGoTo
Szenario, ist es nichtDas Wort "Anruf" behebt mein makro, danke!
Oder, @ThomasShera, wie S O (und andere) darauf hingewiesen, Sie können entfernen Sie den
goto
und diecall
und einfach gut.InformationsquelleAutor kaybee99
Entfernen Sie das Wort
GoTo
GoTo
sagt der code zum Sprung zu einem label, dass Sie es wollen geben Sie eine neue Prozedur, die nicht gehen, um ein labelInformationsquelleAutor Sam
Entfernen
Goto
aus dem Aufruf IhrerSub()
Wenn Sie wirklich wollten mit einem
Goto
(und Sie sollte nicht), würden Siewo ist das label definiert durch die nachfolgende Doppelpunkt
:
goto
, @cptn_hammer, in einemOn Error Goto...
, aber es gibt nur wenige andere gültige Zeiten...Ich habe gerade den link nicht. Ich bevorzuge es, Menschen zu geben, Gründen warum etwas ist, wie es ist, anstatt pauschal Proklamationen. Informationen Rassen Verständnis.
und ich genehmigten edit @Cptn_Hammer. Alles ist gut!
Ahh schaue nicht auf deinen Benutzernamen 🙂
InformationsquelleAutor FreeMan
GoTo
übergänge zu einem label, einem Etikett definiert ist, mit:
Beispiel:
Anwenden
GoTo
auf eineSub
müssen Sie es aufrufen und beenden:(Technisch, es ist nicht das gleiche wie
GoTo
wenn Sie den call-stack zu berücksichtigen, aber das Ergebnis ist das gleiche)GoTo
wird nicht als gute Praxis, aber wenn das nicht Bedenken Sie, nehmen Sie auch einen Blick aufGoSub
am offiziellen docs.InformationsquelleAutor Uri Goren