Calc: Zellbereichabfrage

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

retuwe61
****
Beiträge: 148
Registriert: So, 18.11.2007 21:25

Calc: Zellbereichabfrage

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

Code: Alles auswählen

oSelectSC=oSelectColumn.getByIndex(x+1).getName 
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: 631
Registriert: Fr, 09.12.2011 16:50

Re: Calc: Zellbereichabfrage

Beitrag von mikeleb » Di, 17.10.2017 20:04

Hallo,
das Problem wird sein, dass die fehlerproduzierende Zeile erreicht wird, wenn die Bedingung

Code: Alles auswählen

If CountColumn =1 AND CountRow =1
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: 148
Registriert: So, 18.11.2007 21:25

Re: Calc: Zellbereichabfrage

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: 631
Registriert: Fr, 09.12.2011 16:50

Re: Calc: Zellbereichabfrage

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: 148
Registriert: So, 18.11.2007 21:25

Re: Calc: Zellbereichabfrage

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: 631
Registriert: Fr, 09.12.2011 16:50

Re: Calc: Zellbereichabfrage

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: 148
Registriert: So, 18.11.2007 21:25

Re: Calc: Zellbereichabfrage

Beitrag von retuwe61 » So, 05.11.2017 00:02

Hallo mikeleb.
Vielen Dank.
Gruß
Uwe
Angewandt wird LibeOffice Version 5.1.6.2

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste