Programmierung unter AOO/LO (StarBasic, Python, Java, ...)
Moderator: Moderatoren
-
retuwe61
- ****
- Beiträge: 159
- Registriert: So, 18.11.2007 21:25
Beitrag
von retuwe61 » Di, 17.10.2017 17:35
Hallo miteinander.
Ich habe zwei Fragen:
Nachdem ich in einer Zeile mehrere nebeneinanderliegende Zellen markiert habe, starte ich das nachfolgende Makro, was jedoch in der Zeile
mit einer Fehlermeldung abbricht. Ich finde keine Lösung für die Problembehebung.
Weiterhin möchte die dann für eine Duplikatsuche die in den MsgBoxen enthaltenen Informationen in eine "WENN/UND-Formel" (z. B. =WENN(UND(B2=B1;C2=C1;D2=D1))) übernehmen.
Habt ihr eine Idee?
Gruß
Uwe
Code: Alles auswählen
Sub SelectedCells
oDoc = thisComponent
oSelectColumn=ThisComponent.CurrentSelection.Columns
CountColumn=oSelectColumn.getCount
oSelectSC=oSelectColumn.getByIndex(0).getName
If CountColumn =1 AND CountRow =1 Then
MsgBox ("" + oSelectSC + 2 + "")
Else
For x = 0 To CountColumn -1
MsgBox ("" + oSelectSC(x) + 2 + "")
oSelectSC=oSelectColumn.getByIndex(x+1).getName
Next x
End If
End Sub
Angewandt wird LibeOffice Version 5.1.6.2
-
mikeleb
- ******
- Beiträge: 657
- Registriert: Fr, 09.12.2011 16:50
Beitrag
von mikeleb » Di, 17.10.2017 20:04
Hallo,
das Problem wird sein, dass die fehlerproduzierende Zeile erreicht wird, wenn die Bedingung
nicht erfüllt ist.
Das aber kann auch der Fall sein, wenn CountColumn=1 und CountRow>1 ist. In diesem Fall gibt es den Index 1 bei Columns nicht.
Gruß,
mikeleb
-
retuwe61
- ****
- Beiträge: 159
- Registriert: So, 18.11.2007 21:25
Beitrag
von retuwe61 » Di, 17.10.2017 21:55
Ich konnte das Problem zwischenzeitlich lösen.
Code: Alles auswählen
Sub SelectedCells
oDoc = thisComponent
oSelectColumn=ThisComponent.CurrentSelection.Columns
CountColumn=oSelectColumn.getCount
oSelectSC=oSelectColumn.getByIndex(0).getName
If CountColumn =1 AND CountRow =1 Then
Wert = ("" + oSelectSC + 2 + "")
myCell=oSheet.getCellByPosition(0,0)
mycell.FormulaLocal = Wert
Else
y=1
For x = 0 To CountColumn -1
oSelectSC=oSelectColumn.getByIndex(x).getName
MsgBox ("" + oSelectSC(y+z) + 2 + "")
'
z=x+1
Next x
End If
End Sub
Jetzt stellt sich nur noch die Frage, wie ich die Werte in die Formel bekomme.
Gruß
Uwe
Angewandt wird LibeOffice Version 5.1.6.2
-
mikeleb
- ******
- Beiträge: 657
- Registriert: Fr, 09.12.2011 16:50
Beitrag
von mikeleb » Di, 17.10.2017 22:26
Hallo,
was soll oSelectSC(y+z) bewirken?
Welche Werte sollen in welche Formel?
Gruß,
mikeleb
-
retuwe61
- ****
- Beiträge: 159
- Registriert: So, 18.11.2007 21:25
Beitrag
von retuwe61 » Di, 17.10.2017 22:58
Ich habe den Zellbereich von bspw. B5 bis E5 markiert.
In den MsgBoxen erscheinen momentan nacheinander die Werte "B2" bis "E2". Daraus soll dann Formel "WENN (UND (B2=B1;C2=C1;D2=D1;E2=E1))" erstellt werden, die dann in A2 eingetragen wird (Mittels weiterem Makro wird die Formel anschließend nach unten bis zum letzten Datensatz gezogen).
Angewandt wird LibeOffice Version 5.1.6.2
-
mikeleb
- ******
- Beiträge: 657
- Registriert: Fr, 09.12.2011 16:50
Beitrag
von mikeleb » Mi, 18.10.2017 10:48
Hallo,
so richtig ershcließt sich mir der Sinn noch nicht, aber so sollte es funktionieren:
Code: Alles auswählen
Sub SelectedCells
oDoc = thisComponent
oSelectColumn=ThisComponent.CurrentSelection.Columns
CountColumn=oSelectColumn.getCount
oSelectSC=oSelectColumn.getByIndex(0).getName
oSheet=oDoc.CurrentSelection.Spreadsheet
oCell=oSheet.getCellByPosition(0,0)
If CountColumn =1 AND CountRow =1 Then
formeltext = ("=" & oSelectSC & 2)
Else
spalten=oSelectColumn.getelementnames
for i=0 to ubound(spalten())
spalten(i)=spalten(i) & "2=" & spalten(i) & "1"
next
formeltext="=wenn(und(" & join(spalten(),";") & "))"
End If
oCell.FormulaLocal=formeltext
End Sub
Gruß,
mikeleb
-
retuwe61
- ****
- Beiträge: 159
- Registriert: So, 18.11.2007 21:25
Beitrag
von retuwe61 » So, 05.11.2017 00:02
Hallo mikeleb.
Vielen Dank.
Gruß
Uwe
Angewandt wird LibeOffice Version 5.1.6.2