Seite 1 von 1

Calc: Zellbereichabfrage

Verfasst: Di, 17.10.2017 17:35
von retuwe61
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

Re: Calc: Zellbereichabfrage

Verfasst: Di, 17.10.2017 20:04
von mikeleb
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.

Re: Calc: Zellbereichabfrage

Verfasst: Di, 17.10.2017 21:55
von retuwe61
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

Re: Calc: Zellbereichabfrage

Verfasst: Di, 17.10.2017 22:26
von mikeleb
Hallo,
was soll oSelectSC(y+z) bewirken?
Welche Werte sollen in welche Formel?

Re: Calc: Zellbereichabfrage

Verfasst: Di, 17.10.2017 22:58
von retuwe61
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).

Re: Calc: Zellbereichabfrage

Verfasst: Mi, 18.10.2017 10:48
von mikeleb
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

Re: Calc: Zellbereichabfrage

Verfasst: So, 05.11.2017 00:02
von retuwe61
Hallo mikeleb.
Vielen Dank.
Gruß
Uwe