Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
1100to1104
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

@NoNet wg eckiger Klammern

@NoNet wg eckiger Klammern
Jörg-HH
Hi NoNet
in einem Post vor einiger Zeit (glaub das war der https://www.herber.de/forum/archiv/1080to1084/t1083856.htm) hatte ich dich mal nach den eckigen Klammer gefragt, die du da benutztes. Du sagtest, das sei eine Kurzschreibweise für Range, was ich mir fast gedacht hatte - aber:
In den ersten Monaten meines VBA-Lebens hab ich das auch benutzt, weil es ja in der Hilfe so steht. Wunderte mich nur, daß keiner in meinem Dunstkreis damals diese Schreibweise kannte, selbst altgediente Wissenede und auch ein VBA-Dozent nicht. Der warnte mich nur und vermutete eine alte Schreibweise.
Tatsächlich: Als ich das erste Mal meinen Code, der bei mir prima lief, auf der Maschine meines Chefs und anderswo laufen ließ, ging gar nichts. Es fehlte jeweils ein Control, das irgendwie umständlich von irgendwo hätte heruntergeladen und installiert werden müssen. Daraufhin hab ich befürchtet, daß das wohl öfter auftreten könne, und den gesamten bis dahin erarbeiteten Code umgeschrieben (mit "Ersetzen" hielt sich der Aufwand in Grenzen)
Jetzt wundere ich mich, daß du diese Schreibweise verwendest... Hast du diese Probleme nicht?
Schönen Gruß - Jörg

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Die Klammern [ ] sind keine Controls...
15.09.2009 16:44:26
NoNet
Hey Jörg,
das mit den "altgedienten Wissenden" ist so eine Sache :
Eigentlich zähle ich mich (nach inzwischen ¼ Jahrhundert Programmiererfahrung) auch dazu - aber dennoch behaupte ich nicht, ALLES zu kennen/können. Es bleibt auch bei solchen "Profis" noch viel Luft nach oben ;-)
das schöne ist : Man hat die Gewissheit, noch nicht an das "Ende der Weisheit" angekommen zu sein, sondern kann (fast täglich) neue Erkenntnisse hinzugewinnen.
Ich bin selbst Dozent im IT-Bereich (seit ca. 15 Jahren, seit 2002 jedoch nur noch teilweise), habe u.a. auch schon VBA unterrichtet, kenne aber auch genügend sog. "Dozenten", deren fachliche und/oder didaktische und empathische Fähigkeiten ich für sehr fragwürdig halte (sofern mir dieses Urteil überhaupt zusteht !). Hier gibt es extrem große individuelle Unterschiede.
Zu den Klammern [ ] : Es handelt sich dabei entgegen der Vermutung "Deines" VBA-Dozenten nicht um eine veraltete Schreibweise (wie das z.B. bei den Variablentypen Zahl% oder Text$ ist !), sondern um eine VBA-spezifische Kurzschreibweise der EVALUATE()-Funktion (habe ich bereits in dem von Dir verlinkten Beitrag geschrieben), die eben auch Objekte auswerten kann.
Streng genommen kostet diese Auswertung etwas Zeit (dadurch könnten Makros theoretisch geringfügig langsamer) laufen, in der Praxis macht sich dies jedoch nicht bemerkbar und die Lesbarkeit von [HD2009].Value ist doch wesentlich besser als Cells(2009,212).Value oder ?
Ich verwende diese Schreibweise nun schon seit Jahren (immer dann, wenn es sich um fixe Zelladressen dreht, die nicht inkrementiert werden müssen) und hatte noch nie damit Probleme !
Es handelt sich bei dieser Schreibweise auch nicht um ein "Objekt" oder um ein "Control", so dass dafür auch keine Datei oder DLL/OCX/anderer Control-Container heruntergeladen/installiert werden muss !
Das Problem in Deinem Fall muss eine andere Ursache haben.
Einzig bei der Verwendung der Schreibweise Cells(1,"C") anstelle von Cells(1,3) hatte ich in einem Projekt, so dass ich mich von dieser Syntax wieder "befreit" habe.
Wünsche Dir noch viel Spaß/Durchhaltevermögen/Erfolg beim Erlernen von VBA,
Gruß, NoNet
Anzeige
AW: Die Klammern [ ] sind keine Controls...
15.09.2009 16:56:04
Jörg-HH
...ich hatte so Sachen geschrieben wie
If [b43].Value > 5 Then [B9].Value = [C6] * [3] usw.
als ich alle diese geändert hatte, ging es wieder.
Das mit dem Evaluate() aus deine Antwort neulich hatte ich noch nicht so recht verstanden und auf später verschoben ;-)
Gruß Jörg
Tip : Entweder [C6*3] oder [C6] * 3
15.09.2009 17:05:29
NoNet
Hey Jörg,
[C6] * [3] kann nicht funktionieren, da [3] weder eine Zelle noch ein auszuwertender Ausdruck ist !
Es muss entweder [C6*3] oder [C6] * 3 heißen ;-)
Evaluate("C6*3") entspricht der Schreibweise [C6*3]
Gruß, NoNet
sorry, war 'n Tippfehler...
15.09.2009 18:28:22
Jörg-HH
...hätte [C6] * [C3] heißen sollen...
Anzeige
Aha, Evaluate,...
16.09.2009 16:31:39
Luc:-?
...NoNet,
also ein (verdeckt ablfd) PgmSchritt mehr! Deshalb ist das auch kein Standard-VBA und wird nicht empfohlen, obwohl es normalerweise fkt... Wenn man von der VB(A)-Literatur-Seite her kommt, lernt man das wohl kaum, obwohl es gelegentlich erwähnt wird. Schon die vom Recorder bevorzugte R1C1-Schreibweise ist kein Standard und auch hier einzuordnen, der [] wegen... Alles "quick and dirty programming", da kann der Interpreter schon mal "hoppeln"... Sauber im Sinne von (V)Basic ist wohl nur Cells(zeilennr, spaltennr)...
Gruß Luc :-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige