Makroumsetzung von Excel

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

Moderator: Moderatoren

sorcerer
Beiträge: 4
Registriert: So, 17.08.2008 14:19

Makroumsetzung von Excel

Beitrag von sorcerer »

Hallo
Ich bin neu hier und programmiere eigentlich Excel-VBA.
Ich habe eine kleine Tabelle mit ein paar Makros für ein Spiel erstellt.
Da ein paar meiner Freunde Open Offic benutzen ,habe ich diese Tabelle auf Open Office umgestellt.
Die Formeln waren kein Problem und die meisten Makros paar der Makros laufen auch nach ein paar Anpassungen.
Ein Makro bekomme ich aber nicht zum laufen. Das Makro sucht auf einem anderen Blatt eine Zeile mit dem Wert aus E34 und damit dort 3 Werte.
Die 3 Werte werden eingetragen, der dritte ist auch die Farbe für die Fläche.
Wie sieht dies Makro in OpenOffice aus?
Grüße und Danke für die Hilfe
Kai

Sub Set_laden()
setx = Range("E34").Value
x = Sheets("save").Range("a2:a65536").Find(setx).Row
'1
Sheets("work").Range("L16").Value = Sheets("save").Cells(x, 4) 'color
Sheets("work").Range("L18").Value = Sheets("save").Cells(x, 2) 'wert1
Sheets("work").Range("L19").Value = Sheets("save").Cells(x, 3) 'wert2
colorx = Sheets("save").Cells(x, 4)
Range("L17:L19").Select
With Selection.Interior
.ColorIndex = colorx
.Pattern = xlSolid
End With
'2
Sheets("work").Range("n16").Value = Sheets("save").Cells(x, 7) 'color
Sheets("work").Range("n18").Value = Sheets("save").Cells(x, 5) 'wert1
Sheets("work").Range("n19").Value = Sheets("save").Cells(x, 6) 'wert2
colorx = Sheets("save").Cells(x, 7)
Range("n17:n19").Select
With Selection.Interior
.ColorIndex = colorx
.Pattern = xlSolid
End With
end sub
lupolupp1
**
Beiträge: 32
Registriert: Do, 28.06.2007 14:51

Re: Makroumsetzung von Excel

Beitrag von lupolupp1 »

Hallo Kai,

in OpenOffice sind die Makros, anders als bei Excel VBA, nicht mit einem Tabellenblatt verknüpft. Wenn du ein Makro in einem bestimmten Tabellenblatt oder von einem bestimmten Button aus starten möchtest, so muss man den Code entsprechend zuordnen.

Wenn du daher einfach mit Cells() oder Range arbeitest, weiß der Code nicht, was du meinst.
Du musst folgende Adressierung verwenden:

oRange = ThisComponent.Sheets(0).getByIndex(0).getCellRangeByName("N17:N19")
oRange.Select

Ggf. musst du noch den Wert des Sheets ändern.
Bei OpenOffice beginnt die Adressierung übrigens mit 0 und nicht mit 1!

Ich bin auch relativ neu, hoffe, dass es so funktioniert und ich dir helfen konnte.

Viele Grüße

Lupo
sorcerer hat geschrieben:Hallo
Ich bin neu hier und programmiere eigentlich Excel-VBA.
Ich habe eine kleine Tabelle mit ein paar Makros für ein Spiel erstellt.
Da ein paar meiner Freunde Open Offic benutzen ,habe ich diese Tabelle auf Open Office umgestellt.
Die Formeln waren kein Problem und die meisten Makros paar der Makros laufen auch nach ein paar Anpassungen.
Ein Makro bekomme ich aber nicht zum laufen. Das Makro sucht auf einem anderen Blatt eine Zeile mit dem Wert aus E34 und damit dort 3 Werte.
Die 3 Werte werden eingetragen, der dritte ist auch die Farbe für die Fläche.
Wie sieht dies Makro in OpenOffice aus?
Grüße und Danke für die Hilfe
Kai

Sub Set_laden()
setx = Range("E34").Value
x = Sheets("save").Range("a2:a65536").Find(setx).Row
'1
Sheets("work").Range("L16").Value = Sheets("save").Cells(x, 4) 'color
Sheets("work").Range("L18").Value = Sheets("save").Cells(x, 2) 'wert1
Sheets("work").Range("L19").Value = Sheets("save").Cells(x, 3) 'wert2
colorx = Sheets("save").Cells(x, 4)
Range("L17:L19").Select
With Selection.Interior
.ColorIndex = colorx
.Pattern = xlSolid
End With
'2
Sheets("work").Range("n16").Value = Sheets("save").Cells(x, 7) 'color
Sheets("work").Range("n18").Value = Sheets("save").Cells(x, 5) 'wert1
Sheets("work").Range("n19").Value = Sheets("save").Cells(x, 6) 'wert2
colorx = Sheets("save").Cells(x, 7)
Range("n17:n19").Select
With Selection.Interior
.ColorIndex = colorx
.Pattern = xlSolid
End With
end sub
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Makroumsetzung von Excel

Beitrag von komma4 »

Für das Setzen der Farbe, siehe meine Beispiele colorSelection oder colorRows

Zum Programmierenlernen für OOo: Andrew Pitonyaks Makro Dokument
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
sorcerer
Beiträge: 4
Registriert: So, 17.08.2008 14:19

Re: Makroumsetzung von Excel

Beitrag von sorcerer »

Hallo
Ich hatte die Makros ja schon in Excel fertig.
Dann habe ich das xls in OpenOffice geöffnet und als sxc gespeicher.OO hat die Makros von Excel in Extras-Makros-Verwalten-Cardmaker OO-Standart-Modul1 aufgeführt.
Dort stehen die Excel Makros in Excel-VBA.
Die meisten liefen auch sofort oder nach Löschung von ein paar Zeilen (.Pattern = xlSolid).
Scheinbar geht VBA in Grenzen auch in OO, z.B.:
Sub set1()
If Range("e6") = "" Then
Range("l18").ClearContents
Range("l19").ClearContents
Else
Range("E2").Copy
Range("L18").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("E3").Copy
Range("L19").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End If
wert = Range("c16")
Select Case wert
Case "Att-Will"
....
läuft ohne Probleme.
Ich denke, das setzen und laden von Zellen sollte ich auch mit VBA hinbekommen.
Da ich mich nicht unbedingt tiefer in die OO-Makroprogrammierung einarbeiten will (es ist nur für diese Tabelle) bräuchte ich nur die OO Übersetzung für:
setx = Range("E34").Value
x = Sheets("save").Range("a2:a65536").Find(setx).Row
Das Find für die row sollte sich dabei auf das Blatt "save" beziehen.
Geht das überhaupt? Nach der Antwort von Lupo sieht das für mich so aus, als wenn nur Blatt Nummer in ihrer Reihenfolge angesprochen werden können.
In einem der laufenden Excel Makros unter OO funtioniert aber auch:
Sheets("save").Cells(letzte, 2).Value = Sheets("work").Range("L18")
Grüße
Kai
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Makroumsetzung von Excel

Beitrag von komma4 »

sorcerer hat geschrieben:Da ich mich nicht unbedingt tiefer in die OO-Makroprogrammierung einarbeiten will (es ist nur für diese Tabelle) bräuchte ich nur die OO Übersetzung
Was zahlst Du?

Das Setzen oder Lesen von Werten in Calc Zellen war des öfteren schon Gegenstand hier. Die Suchfunktion hilft Dir weiter.

setx = ThisComponent.Sheets().getByName( "save").getCellByPosition( 33, 4).getValue()
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
sorcerer
Beiträge: 4
Registriert: So, 17.08.2008 14:19

Re: Makroumsetzung von Excel

Beitrag von sorcerer »

Hallo Komma4
Danke für die Antwort.
Die Setx Zeile läuft auch mit dem VBA Code von Excel.
Was ich nicht kann und was ich auch nicht gefunden habe ist die andere Zeile.
Die, die nach dem Wert Setx im Blatt Save in Spalte A sucht und mir die Zeilennummer zurück gibt.
x = Sheets("save").Range("a2:a65536").Find(setx).Row

Grüße
Kai
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Makroumsetzung von Excel

Beitrag von komma4 »

Kai,

so geht's:

Code: Alles auswählen

oBlatt = ThisComponent.Sheets().getByName( "save" )
oBereich = oBlatt.getCellRangeByPosition( 1, 0,  65535, 0 )


oSuchBeschr = oBlatt.createSearchDescriptor()
With oSuchBeschr
 .SearchRegularExpression = FALSE
 .SearchCaseSensitive = FALSE
 .SearchString = sSuchbegriff
End With

oGefunden = oBlatt.findFirst( oSuchBeschr )

print "gefunden in Zeile " & oGefunden.CellAddress.Row + 1 
wobei die gefundene Zeile (wenn gefunden) bei dem Suchbereich immer A ist...
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
sorcerer
Beiträge: 4
Registriert: So, 17.08.2008 14:19

Re: Makroumsetzung von Excel

Beitrag von sorcerer »

Hallo
DANKE
Grüße
Kai
Antworten