2016-06-07 10 views
2

Dies ist ein Problem, das ich versucht habe, eine Antwort für Monate zu finden, aber ohne Erfolg! Warum funktioniert das Code-Snippet: -Ausdrücke im Vergleich zu Variablen in Excel VBA

Sub sbDispCellAddress_01() 
ActiveCell.Address 
MsgBox ActiveCell.Address 
End Sub 

funktioniert nicht.
Wenn ich es ausführen bekomme ich einen Kompilierfehler: Invalid use of property und die 'Adresse' folgende 'ActiveCell' ist blau markiert.

Doch der folgende Code-Schnipsel funktioniert: -

Sub sbDispCellAddress_02() 
Dim s As String 
s=ActiveCell.Address 
MsgBox s 
End Sub 

so warum der Top-Code nicht?
Was bewirkt die Variable, die den unteren Code funktioniert?
Bitte helfen Sie mir, dieses einfache Beispiel zu verstehen.

+0

Was würden Sie von dem Top-Code erwarten? Was wäre der Sinn einer Zeile, die eine Adresse auswertet, aber nichts damit macht? – Rory

+0

Guter Punkt Rory. Danke für Ihre Antwort. – ComfortablyNumb

Antwort

1

Die VBA-Grammatik ist ein Gesetz für sich.

ActiveCell.Address ist syntaktisch ungültig es sei denn, es durch etwas „gebraucht“ ist wird, wie beispielsweise auf eine Variable eines geeigneten Typs zugeordnet ist, oder als Funktionsparameter (wie beispielsweise ein Argument an MsgBox).

In Ihrem Fall verschwindet das Problem, wenn Sie Zeile sofort nach Sub sbDispCellAddress_01() entfernen.

In dieser Hinsicht VBA aus Sprachen wie C abweicht, C++ und Java, wo ein Ausdruck von einer Terminator Anweisung gefolgt ist selbst eine Aussage und daher gültig.

+0

Danke, Bathsheba. Ich muss daran denken, meinen Kopf aus C herauszuholen und tiefer in die VBA-Sprache einzutauchen. – ComfortablyNumb

+0

Ihre obige Erklärung fasst kurz zusammen, Bathsheba, was ich seit Monaten mit endlosen Trawling des Netzes ohne Erfolg gesucht habe. Nachdem ich in den letzten Monaten nur excel VBA ernster genommen habe, hat Ihr Rat mein Verständnis der VBA Sprache enorm erweitert. Vielen Dank nochmal. – ComfortablyNumb

Verwandte Themen