Hallo Julia,
Formeln in Tabellen verwende ich schon seit vielen Jahren.
Gut zu wissen, denn dadurch kann ich mir später einiges an Tipp-Arbeit ersparen.
Daher war/ist da ja auch so viel unsinniges Zeug drin.
Na ganz so schlimm ist es ja auch nicht. Du hast dir gedanken gemacht wie Du deine Idden am besten umsetzen kannst. Das man das eine oder andere besser, oder anders erledigen kann, ist doch ganz normal, und außerdem woher sollst Du das auch schon alles kennen können.
Einiges von dem, was in den Makros auftaucht, habe ich vor zwei Wochen noch zu weniger als 50% verstanden, manches gar nicht.
Denke blos nicht weil ich hier relativ viele Beiträge geschrieben habe (die Anzahl kannst Du ja selber nachschauen), das ich wer besonders bin. Oh nein, dem ist nicht so! Grad wenns um Makros geht, zähle ich mich selber zu den
Fortgeschrittenen Anfängern. Ich weiss noch längst nicht alles und ich werde auch nicht alles verstehen werden, aber ich weiss das ich mit meinem Wissen schon mal etwas auf die Beine gestellt habe, was sich durchaus sehen lassen kann (wurde von meinem "Kunden" sehr hoch gelobt).
Ich hatte wohl mich mit einem ähnlichen Thema, was hier auch bald dran kommen wird, schon manchmal mit befasst beziehungsweise befassen müssen. Aber jetzt ist dies Thema doch etwas anders gelagert, und bis Dienstag abend wusste ich nicht so recht wie ich das am besten lösen kann. Bis das ich hier durch Forenbeiträge auf etwas gestoßen bin, welches ich anschließend durch "Trial & Error" so mir erarbeitet habe das es wie gewünscht funktioniert. Ich sage jetzt nur mal so als nebeninfo:
"Ersetze SVERWEIS durch etwas anderes im Makro."
Aber wie gesagt, dieser Punkt, oder meinetwegen auch Thema, kommt etwas später dran. Und dann werde ich auch mehr dazu erklären und beschreiben.
Doch nun wird ernsthaft gearbeitet.
Und die Arbeit fängt mit ein paar Grundlegenden Informationen an, die den Umgang mit bestimten Dingen erleichtern und oder übersichtlicher machen sollen.
Fangen wir mit der Variablen deklaration an.
Im anderen Thread hatte ich dir ja schon ein paar davon vorgegeben. Wobei das dort nur ein "Schnellschuß" war, hier noch mal zur Verdeutlichung.
Jetzt nehme ich mir zumindest etwas mehr Zeit für diesen Punkt.
Also warum habe ich den Variablennamen so benannt wie zu sehen ist?
Einerseits weil er so Eindeutig zuzuornen ist (Artikelnummer_Artikel), aber anderseits weil er noch eine bestimmte Aussage beinhaltet. Und diese Aussage lautet:
"Es handelt sich um ein Object"
Nein! Damit meine ich jetzt nicht das
as Object, sondern das kleine o am Wortanfang
oArtikelnummer_Artikel. Das
as Object sehen wir nur jetzt bei der deklaration, aber später beim weiteren Programmieren nicht mehr. Und deshalb ist es hilfreich, wenn man den Typ der Variable auch schon vor dem eigentlichen Variablennamen später identifizieren kann.
Aber ist das denn sooo wichtig und ein Gesetzt?
Nein, es ist weder das eine noch das andere.
ABER
beim weiteren programmieren ist das schon sehr hilfreich, und anderseits können damit bestimmte Probleme umgangen oder Fehler vermieden werden.
Hilfreich:
Ein Objekt hat mehrere Eigenschaften, die nach beziehungsweise 'unter' dem Objekt zu finden sind.
Ich werde wohl nicht nur jetzt, sondern im weiteren Verlauf des Threads hier wohl öfters mal den Vergleich mit einem Haus anstellen.
Also das Objekt ist ein Haus. Und ein Haus hat einerseits viele Räume/Zimmer, die unterschiedlich gebaut und ausgestattet seien können, und anderseits hat auch das Haus ein Äußeres aussehen.
Wenn man also nun weiss, das es sich um ein Haus handelt, dann weiß man das man da noch viel mehr Informationen herausholen kann.
Beispiel:
Unterm Dach befindet sich eine kleine Wohnung die anders aussieht, als die übrigen Zimmer.
Hier sind 3 wichtige Informationen; Unterm Dach, anders aussieht, übrige Zimmer.
Unterm Dach ist eine Zelladresse wie z.B. A5, und aussehen ist zum Beispiel der Zellhintergrund. Und übrige Zimmer sind halt andere Zelladressen wie z.B. B99.
Probleme umgehen:
Vereinfacht ausgedrückt, es ist nicht gut wenn man einmal sagt,
und etwas später, wo man nicht mehr an den vergeben Variablennamen denkt, folgendes sagt.
Okay, es kann durchaus wegen so etwa zu einer Fehlermelung vom Programm kommen. Aber es war ja jetzt nur mal etwas überspitzt dargestellt, obwohl so was auch schon mal ungewollt vorkommen kann.
Fehler vermeiden:
Und das ist ein extrem wichtiger Punkt. Der kann sich eventuell sehr schnell bemerkbar machen, oder vielleicht unter Umständen erst etwas später.
Es ist z.B.
absolut VERBOTEN "Funktionsnamen" {Funktion, Anweisung} als Variablennamen zu verwenden. Also
geht schief. Das Office wird dies mit einer Fehlermeldung anmäääckern.
Umgehen könnte man dies z.B. durch
jedoch ist sicherheitshalber auch davon abzusehen. Am besten, wenn irgendwie möglich, ruhig lange Wörter nehmen die z.B. einen Unterstrich beinhalten (oArtikelnummer_Artikel), oder eine andere Schreibweise aufweisen wie z.B. oArtikelNummerArtikel. Und es darf auch ruhig in deutsch geschrieben werden.
Okay, so viel zum "Object".
Kommen wir nun zu anderen Variablentypen.
Code: Alles auswählen
Dim End_Row as integer, ID as Integer, RowIndex as integer, End_Row as integer
Wirst Du auch noch in 2 Jahren bei einem Blick weit hinten im Makro-Code wissen was z.B. ID für ein Variablentyp ist?
Wie schon erwähnt, sieht man den Variablentyp nur jetzt am Makroanfang, aber weiter hinten kann man ihn schon wieder vergessen haben, und deshalb empfehle ich zumindest folgendes.
Den wichtigsten Variablennamen den Variablentyp voranzustellen. Dazu muss man sich ja eigentlich nur folgendes merken.
o = Object
i = Integer
s = String
l = Long
a = Array
v = Variant
...
Und dadurch würden dann jetzt die eben gezeigten Variablen so aussehen.
Code: Alles auswählen
Dim iEnd_Row as integer, iID as Integer, iRowIndex as integer
Sollte es vorkommen das eine "Zahlen-Variable" nicht mit INTEGER deklariert werden kann, weil sie durchaus größer als 32767 sein kann, und das als Ganzzahl also ohne Nachkommastelle, dann nimmt man sich natürlich einen anderen Variablen-Typ wie z.B. Long Integer.
Während man aus einem oHaus noch weitere, tiefer liegende Informationen auslesen kann - {später mehr dazu} - , geht das z.B. bei iKleineZahl nicht mehr, Ende der "Fahnenstange".
Jetzt muss ich aber noch mal zu dem Punkt
Probleme umgehen zurück kommen, weil mir in deiner Datei ein Sonderfall aufgefallen ist. Der für dich anfänglich wohl verständlich ist, aber wohl vielleicht irgendwann einmal zu Problemen führen kann. Ich habe es jedoch noch nicht durchtesten können.
Um was geht es denn genau?
Ganz einfach, um das hier.
Okay, ich ersehe daraus das Du dir gedacht hast:
"Nehme ich halt Val, als Abkürzung für Value."
Tja, das dumme ist nur, das VAL eine fest vorgegebene FUNKTION ist. Und nein, ich werde jetzt an dieser Stelle nichts weiteres zu der Funktion sagen, das sollst Du jetzt selber herausfinden. Das hat auch den Sinn, das Du dadurch einen kleinen "Handhabungs-Trick" kennen lernst.
- Gehe in das Modul *Artikel*
- Suche die eben gezeigte DIM-Zeile
- Setze den Text-Cursor genau links vor das V von Val, oder probiers mit Text-Cursor in Val
- Drücke nun die Taste F1
Normalerweise sollte sich jetzt das Hilfe-Fenster von LO öffnen und dir etwas zu Val zeigen.
So, das bedeutet für dich, das Du eine vorgegebene Funktion als "Vorname" für einen Variablennamen vergeben hast. Und bis jetzt scheint es auch so, das wohl noch nix schlimmes passiert ist.
Aber darauf verlassen würde ich mich auf gar keinen Fall, denn Probleme können deswegen entstehen, oder auch nicht. Jedoch "Russisch-Roulett" spielen muss nicht sein.
Dieses Problem muss jetzt natürlich beseitigt werden. Das dumme an der Sache ist jetzt nur, das die Abkürzung s schon für String "verplant" wurde, auch wenn das nicht als in Stein gemeißeltes Gesetz anzusehen ist. Also was könnte man da machen, damit man auch anderer Stelle erkennen kann das es sich um eine Variable vom Typ Singel handelt?
Ich muss gestehen, das mir im moment keine passende Lösung einfällt die aus einem einzigen Buchstaben, außer s, besteht und auf den Variablen Typ Singel hinweist.
Mein Vorschlag wäre jetzt folgender.
Nicht schön und elegant, aber immerhin ein Kompromiss.
Puuuh!
Viel Text.
Deine jetzige "Hausaufgabe" besteht darin, das Du die Variablen deklaration überarbeitest, Anregungen habe ich ja gegeben, anschließend die Variablen defenition änderst und natürlich die angewendeten Variablen auch dementsprechend abänderst. Und so nebenbei wendest Du mal zum üben für dich hin und wider den aufgeführten "Handhabungs-Trick" an. Man kann auch einfach F1 aufrufen und den gewünschten Suchbegriff direkt eingeben, aber manchmal ist diser Trick einfach sicherer und schneller.
Die geänderte Datei hängst Du beim nächsten mal hier an. Und dann nehmen wir uns ein anders Thema vor. Es sei denn Du hast dann noch Fragen zu der Variablen deklaration, dann werden wir uns dieser annehmen.
Schluß für Heute?
Ja! Soll erstmal reichen.
Gruß
balu