Sehe ich es richtig , dass das Lattenkreuz als Platzhalter dient ?
Das 'Lattenkreuz' (Raute) dient nur dazu ein eindeutige Trennstelle zwischen der laufenden Nummer und dem Rest zu schaffen, damit die lfd. Numnmer bequem per Split()-Anweisung abgetrennt werden kann.
Die laufende NUmmer ihrerseits wird gebraucht um den Datensatz in der Calc-Tabelle ein-eindeutig zu identifizieren.
Das Ganze ist ein wenig 'hemdsärmlig' programmiert, erfüllt aber zunächst seinen Zweck.
Was bedeutet "erg", ist dies frei wählbar ?
erg ist nur ein Variablennasme, im Konkreten einer Variable die ein Array zugewiesen bekommt, welchjes aus der Split-Anweisung resultiert. Ja, der Name "erg" ist frei wählbar, einzig sollte/darf es kein 'Wort' sein was Teil der Basic-Programmiersprache ist.
Mit "i" sind sicherlich die Zeilen gemeint, doch was bedeutet "j" ?
Ja, i meint hier die Zeilen (den Index der Zeilen), und zwar einmal die Zeilen eines Array():
Code: Alles auswählen
For i = 0 To UBOUND(ausgangsdaten())
If ausgangsdaten(i) (0) <> "" Then
Redim Preserve alle(i)
alle(i) = ausgangsdaten(i) (3) & ", " & ausgangsdaten(i) (2) & ", " & ausgangsdaten(i) (5) & " #" & ausgangsdaten(i) (0)
End If
Next i
und einmal die Zeilen einer Calc-Tabelle:
Code: Alles auswählen
For i = 0 To 99
If ThisComponent.CurrentController.ActiveSheet.getCellByPOsition(2, i+3).FormulaLOcal = ds_nummer Then
j = i+3
Exit For
End If
Next i
i ist in beiden Fällen einfach nur eine Zählvariable, hat also alleine keinen konkrete Bezug auf Zeilen, sondern nur mit dem jeweiligen restlichen Code zusammen.
j ist wieder nur der Name einer Variable, man könnte das auch "x" oder "erg2" oder "BlaBla" oder sonstwie nennen. Sinnvoll ist es aber Variablennamen zu verwenden die etwas über das sagen was die Variable beeinhaltet, z.B. die zwei Variablen "alle" und "ausgangsdaten" sagen etwas über den Inhalt, "j" tut das nicht, ist also eigentlich kein günstiger Variiablenname.
alle(i) = ausgangsdaten(i) (3)
Links steht wieder eine Variable (in Form eines Array) hierbei wird der i-ten Zelle dieses Arrays der 3. Wert des Arrays zugewiesen das in der i-ten Zelle des Arrays "ausgangsdaten" steht.
Nein, das entspricht, hier im KOnkreten, nicht Spalte D (der Calc-Tabelle) weil das Array die Spalten C bis H der Calc-Tabelle rerpresentiert. Die 3. Spalte dieses Arrays (Zählung auch bei 0 beginnend) entspricht somit der Spalte F der Calc-Tabelle.
Das alles ist hier nur deshalb so weil DEine Calc-Tabelle nicht in Spalte A beginnte, sondern erst in Spalte C.
getCellByPosition(2, i+3)
2 bedeutet Spalte C (3. Spalte, weil Zählung bei 0 beginnt).
i+3 ist ein Schreibfehler, in der Beispieldatei selbst steht richtigerweise i+4, das bedeutet das in Zeile 5 (Index = 4) der Calc-Tabelle begonnen wird weil dort die erste Datenzeile steht.
Man kann das aber variabel schreiben, z.B. ist:
Code: Alles auswählen
For i = 0 To 99
If ThisComponent.CurrentController.ActiveSheet.getCellByPOsition(2, i+4).FormulaLOcal = ds_nummer Then
j = i+4
Exit For
End If
Next i
das Gleiche wie:
Code: Alles auswählen
For i = 4 To 103
If ThisComponent.CurrentController.ActiveSheet.getCellByPOsition(2, i).FormulaLOcal = ds_nummer Then
j = i
Exit For
End If
Next i
Gruß
Stephan
[quote]Sehe ich es richtig , dass das Lattenkreuz als Platzhalter dient ?[/quote]
Das 'Lattenkreuz' (Raute) dient nur dazu ein eindeutige Trennstelle zwischen der laufenden Nummer und dem Rest zu schaffen, damit die lfd. Numnmer bequem per Split()-Anweisung abgetrennt werden kann.
Die laufende NUmmer ihrerseits wird gebraucht um den Datensatz in der Calc-Tabelle ein-eindeutig zu identifizieren.
Das Ganze ist ein wenig 'hemdsärmlig' programmiert, erfüllt aber zunächst seinen Zweck.
[quote]
Was bedeutet "erg", ist dies frei wählbar ?[/quote]
erg ist nur ein Variablennasme, im Konkreten einer Variable die ein Array zugewiesen bekommt, welchjes aus der Split-Anweisung resultiert. Ja, der Name "erg" ist frei wählbar, einzig sollte/darf es kein 'Wort' sein was Teil der Basic-Programmiersprache ist.
[quote]Mit "i" sind sicherlich die Zeilen gemeint, doch was bedeutet "j" ?[/quote]
Ja, i meint hier die Zeilen (den Index der Zeilen), und zwar einmal die Zeilen eines Array():
[code]For i = 0 To UBOUND(ausgangsdaten())
If ausgangsdaten(i) (0) <> "" Then
Redim Preserve alle(i)
alle(i) = ausgangsdaten(i) (3) & ", " & ausgangsdaten(i) (2) & ", " & ausgangsdaten(i) (5) & " #" & ausgangsdaten(i) (0)
End If
Next i
[/code]
und einmal die Zeilen einer Calc-Tabelle:
[code]For i = 0 To 99
If ThisComponent.CurrentController.ActiveSheet.getCellByPOsition(2, i+3).FormulaLOcal = ds_nummer Then
j = i+3
Exit For
End If
Next i
[/code]
i ist in beiden Fällen einfach nur eine Zählvariable, hat also alleine keinen konkrete Bezug auf Zeilen, sondern nur mit dem jeweiligen restlichen Code zusammen.
j ist wieder nur der Name einer Variable, man könnte das auch "x" oder "erg2" oder "BlaBla" oder sonstwie nennen. Sinnvoll ist es aber Variablennamen zu verwenden die etwas über das sagen was die Variable beeinhaltet, z.B. die zwei Variablen "alle" und "ausgangsdaten" sagen etwas über den Inhalt, "j" tut das nicht, ist also eigentlich kein günstiger Variiablenname.
[quote]alle(i) = ausgangsdaten(i) (3)[/quote]
Links steht wieder eine Variable (in Form eines Array) hierbei wird der i-ten Zelle dieses Arrays der 3. Wert des Arrays zugewiesen das in der i-ten Zelle des Arrays "ausgangsdaten" steht.
Nein, das entspricht, hier im KOnkreten, nicht Spalte D (der Calc-Tabelle) weil das Array die Spalten C bis H der Calc-Tabelle rerpresentiert. Die 3. Spalte dieses Arrays (Zählung auch bei 0 beginnend) entspricht somit der Spalte F der Calc-Tabelle.
Das alles ist hier nur deshalb so weil DEine Calc-Tabelle nicht in Spalte A beginnte, sondern erst in Spalte C.
[quote]getCellByPosition(2, i+3)[/quote]
2 bedeutet Spalte C (3. Spalte, weil Zählung bei 0 beginnt).
i+3 ist ein Schreibfehler, in der Beispieldatei selbst steht richtigerweise i+4, das bedeutet das in Zeile 5 (Index = 4) der Calc-Tabelle begonnen wird weil dort die erste Datenzeile steht.
Man kann das aber variabel schreiben, z.B. ist:
[code]For i = 0 To 99
If ThisComponent.CurrentController.ActiveSheet.getCellByPOsition(2, i+4).FormulaLOcal = ds_nummer Then
j = i+4
Exit For
End If
Next i
[/code]
das Gleiche wie:
[code]For i = 4 To 103
If ThisComponent.CurrentController.ActiveSheet.getCellByPOsition(2, i).FormulaLOcal = ds_nummer Then
j = i
Exit For
End If
Next i
[/code]
Gruß
Stephan