Gibt es eine Methode, die ich verwenden kann Konvertieren Sie den gesamten Bereich in einer Zeile?
Ja, Sie können ohne Schleifen konvertieren. Versuchen Sie, diese
Sub Sample()
[A1:A20] = [INDEX(UPPER(A1:A20),)]
End Sub
Wie pro Ihr Beispiel
W.Range("A1:A20") = [index(upper(A1:A20),)]
Erklärung
Es gibt zwei Teile zu [A1:A20] = [INDEX(UPPER(A1:A20),)]
TEIL 1
Wie oben gezeigt, ist [A1:A20]
nichts anderes als nur ein kurzer Weg des Schreibens Range("A1:A20")
TEIL 2
[INDEX(UPPER(A1:A20),)]
Index
und Upper
sind Tabellenfunktionen. So können Sie Application.Worksheetfunction.Index()
verwenden, aber da wir nicht ein Äquivalent UPPER
wie Application.Worksheetfunction.UPPER()
haben, können wir nur schreiben es als [cell] = [UPPER(cell)]
Jetzt mit dieser Zeile wir VBA
beauftragen ein Array zurück und das ist, wo INDEX
ins Spiel kommt . (Wie wir wissen, gibt es zwei Formen der INDEX
-Funktion: die Array-Form und die Referenzform.) Indem wir keine Zeile oder Spalte des Arrays angeben, lassen wir einfach Excel wissen, dass wir das gesamte Array wollen . (in VBA-Hilfe erwähnt auch) Also im Grunde, was wir tun, ist jede Zelle in [A1:A20]
in Groß Umwandlung
Warum Sie nicht über jede Zelle Schleife wollen? – Jack