Schleife?? Aber wie

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

Moderator: Moderatoren

Felixcate
Beiträge: 6
Registriert: Di, 04.04.2006 14:09

Schleife?? Aber wie

Beitrag von Felixcate »

Hallo

ich möchte Zellen verbinden A1 mit B1 dann A2 mit B2 usw.....wie kann ich das machen??

Ich habe folgenden Code der A1 mit B1 verbindet....jetzt soll das in einer Schleife geschehen

rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1:$B$1"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "MoveContents"
args2(0).Value = true

dispatcher.executeDispatch(document, ".uno:ToggleMergeCells", "", 0, args2())
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Felixcate,

hmm, auch hier gilt: Der Recorder ist dafür nicht geeignet. Hier hilft nur manuelles Programmieren:

Der forlgende Code verbindet die Zellen a1/B1 bis A10/B10 in einer Schleife - die musst du halt entsprechend anpassen:

Code: Alles auswählen

sub ZellenVerbinden
   dim oBereich as object, oSheet as Object
   oSheet = ThisComponent.sheets(0)  '1. Tabellenbaltt
   for i = 1 to 10 
       oBereich = oSheet.getCellRangeByName("A" & i & ":B" & i)
       oBereich.merge(true)
   next
end sub
Wenn du "false" übergibst, wird der Zellbereich wieder aufgelöst :wink:

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Felixcate
Beiträge: 6
Registriert: Di, 04.04.2006 14:09

vielen Dank

Beitrag von Felixcate »

Hallo

danke aber jetzt löscht er den Inhalt von der zweiten Zelle. Ich möchte ja in der ersten Zelle den Inhalt der ersten Zelle und der zweiten haben zusammengeführt.

Gruß Tobi
Pumeluk2
Beiträge: 1
Registriert: So, 09.04.2006 17:14

Beitrag von Pumeluk2 »

Hallo,

einfach die Prozedur wie folgt ändern, und schon sollte das mit dem Inhalt zusammenfügen klappen:

Code: Alles auswählen

sub InhalteVerbinden 
   dim oBereich as object, oSheet as Object
   dim vTemp as variant
   oSheet = ThisComponent.sheets(0)  '1. Tabellenbaltt
   With oSheet
      For i = 1 to 10
         vTemp = .getCellRangeByName("A" & i).Value & .getCellRangeByName("B" & i).Value
         .getCellRangeByName("A" & i).Value = vTemp
      Next i
   End With  
end sub
Felixcate
Beiträge: 6
Registriert: Di, 04.04.2006 14:09

Lösung

Beitrag von Felixcate »

Hallo

also ich habs jetzt:

sub Zellen_verbinden

dim oBereich as object, oSheet as Object
dim vTemp as variant
oSheet = ThisComponent.sheets(0) '1. Tabellenbaltt
With oSheet
For i = 4 to 200
vTemp = .getCellByPosition(0,i).String & " " & .getCellByPosition(1,i).String
.getCellByPosition(0,i).String = vTemp
Next i
End With

end sub
Antworten