Wenn Sie wissen möchten, ob ein Objekt von einem speziellen Typ ist, schreiben Sie den folgenden Code:
Wenn TypeOf obj ListItem ist, dann ...
Wenn Sie den Namen eines Objekttyps erhalten möchten, verwenden Sie:
MsgBox „Das Element ist ein“ & TypeName(obj)
Steuern Sie lange SchleifenWenn das Programm in einer langen Schleife steckt, können Sie keine Befehlsschaltflächen oder Tasten anklicken. Dies ist für Benutzer sehr schwer zu kontrollieren. Vielleicht möchte der Benutzer die Schleife nicht mehr ausführen und verlässt sie, indem er auf die Schaltfläche „Abbrechen“ klickt? Wie kann dieses Problem gelöst werden? Die Antwort lautet: Verwenden Sie den Befehl DoEvents! Das heißt, führen Sie den DoEvents-Befehl am Anfang der Schleife aus, wie im folgenden Code:
Dim i As Long
Für i = 1 bis 1000000
DoEvents
...
Als nächstes i
Tatsächlich muss der Befehl „DoEvents“ nicht in Zeile 1 platziert werden, sondern kann an einer beliebigen Stelle in der Schleife platziert werden. Dadurch erhalten andere Teile des Programms, beispielsweise eine Befehlsschaltfläche, die die Schleife beendet, eine weitere Chance, Klickereignisse zu akzeptieren.
Machen Sie lange Schleifen schnellerIch habe festgestellt, dass es im Allgemeinen besser ist, die API-Funktion GetInputState zu verwenden, um den Wert der Eingabewarteschlange des Programms zu überprüfen. Ich weiß nicht, warum die If-Anweisung den Code schneller laufen lässt, aber sie funktioniert tatsächlich einwandfrei.
Daher kann die folgende Codezeile sein
DoEvents
Ersetzen durch
Wenn GetInputState(), dann DoEvents
Probieren Sie es aus!
Tatsächlich liegt der Grund dafür darin, dass die DoEvents-Anweisung es jeder Anwendung ermöglicht, verwandte Ereignisse auszuführen, nicht nur Ihrem eigenen Programm. Nach dem Hinzufügen des GetInputState-Urteils können Sie nur noch Ereignisaktionen aus Ihrem eigenen Programm akzeptieren!
Machen Sie Select Case einfacherSchauen wir uns das folgende Beispiel an: Erstellen einer Zeichenfolge durch Klicken des Benutzers auf verschiedene Tag-Kombinationen:
lbl(0) = „Hallo“
lbl(1) = „Ich kommentiere: m“
lbl(2) = „Glücklich“
lbl(3) = „Traurig“
...
sub lbl_click (Index als Ganzzahl)
string$ = string$+lbl(index).caption
Anschließend müssen Sie eine Reihe von Select-Case-Anweisungen schreiben, um diese Zeichenfolge zu analysieren ...
Wählen Sie die Zeichenfolge $ aus
Fall „Hallo, ich kommentiere: Ich bin glücklich“
etwas tun
Fall „Hallo, ich kommentiere: m“
das wäre ein Fehler...
Fall anders
etwas anderes machen
Ende auswählen
Wie Sie sehen, wäre dies sehr komplex, insbesondere wenn viele Tags vorhanden sind und rechtliche Prüfungen für Zusammenführungsvorgänge erforderlich sind.
Um dieses Problem zu lösen, habe ich ein Array mit der gleichen Länge wie die Anzahl der Tags erstellt:
arraylbl(n) als Ganzzahl
Der Startwert des Arrays ist 1, und dann ist der Wert jedes Elements gleich dem vorherigen Wert multipliziert mit 2 (Wert * 2), genau wie folgt: 1 2 4 8 16 32 64... Auf diese Weise wird der Die Kombination jedes Etikettenpaars ergibt einen weiteren eindeutigen Wert.
lbl(0) + lbl(1) = 1 + 2 = 3
lbl(0) + lbl(1) + lbl(4) = 1 + 2 + 16 = 19
Wenn nun auf eine Beschriftung geklickt wird, wird der entsprechende lblarray()-Wert zur Variablen hinzugefügt. Auf diese Weise können Sie auf der Grundlage einiger Zahlen einfach eine Select-Case-Anweisung schreiben:
Wählen Sie den Fall IsLegal aus
Fall 3
Hinweis: Die Zeichenfolge war gültig
Rufen Sie Waren an
Fall 19
Hinweis: Die Zeichenfolge war gültig
Rufen Sie Waren an
caseelse
Hinweis: ungültig
Nennen Sie nicht gut
Ende auswählen
Haha, manchmal kann die Digitalisierung von Charakteren unerwartet gute Auswirkungen haben!