Makroumsetzung von Excel
Moderator: Moderatoren
Makroumsetzung von Excel
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
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
Re: Makroumsetzung von Excel
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
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
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Makroumsetzung von Excel
Für das Setzen der Farbe, siehe meine Beispiele colorSelection oder colorRows
Zum Programmierenlernen für OOo: Andrew Pitonyaks Makro Dokument
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)
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)
Re: Makroumsetzung von Excel
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
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
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Makroumsetzung von Excel
Was zahlst Du?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
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)
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)
Re: Makroumsetzung von Excel
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
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
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Makroumsetzung von Excel
Kai,
so geht's:
wobei die gefundene Zeile (wenn gefunden) bei dem Suchbereich immer A ist...
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
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)
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)
Re: Makroumsetzung von Excel
Hallo
DANKE
Grüße
Kai
DANKE
Grüße
Kai