[Gelöst] mehrere Zellbereiche in mehren Tabblättern löschen

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

Moderator: Moderatoren

skydiver86
Beiträge: 6
Registriert: Mo, 23.06.2014 20:04

[Gelöst] mehrere Zellbereiche in mehren Tabblättern löschen

Beitrag von skydiver86 »

Hallo,
ich bin neu hier und hab folgendes Problem:
Ich habe ein Excel-Makro, das ich nicht in OOo Basic umgeschrieben bekomme. Es soll mehrere Zellbereiche, die in 3 Tabellenblättern stehen und Bereichsnamen haben über eine MsgBox löschen und wenn bei der 1. MsgBox löschen ausgewählt wurde, auch noch die 2. MsgBox zum löschen weiterer Zellbereiche angeboten werden. Ich habe mal das VBA-Script angehängt:

Code: Alles auswählen

[Private Sub Datenloeschen()
antwort = MsgBox("abc", vbOKCancel, "Vorsicht!")
If antwort = 2 Then GoTo schluss
GoTo loeschen
schluss:
Exit Sub

loeschen:
Worksheets("x").Activate
Worksheets("x").Range("a").ClearContents
Worksheets("x").Range("b").ClearContents
Worksheets("x").Range("b").Font.ColorIndex = 1
Worksheets("y").Activate
Worksheets("y").Range("d").ClearContents
Worksheets("y").Range("e").ClearContents
Worksheets("y").Range("e").Font.ColorIndex = 1
Worksheets("z").Activate
Worksheets("z").Range("f").ClearContents
Worksheets("z").Range("g").ClearContents
Worksheets("w").Activate

antwort = MsgBox("def" = ok)", vbOKCancel, "Vorsicht!")
If antwort = 2 Then GoTo schluss

Worksheets("y").Activate
Worksheets("y").Range("h").ClearContents
Worksheets("z").Activate
Worksheets("z").Range("i").ClearContents
Worksheets("w").Activate
End Sub
  Moderation: Zur übersichtlichen Darstellung von Programmcode im Text [​code][​/code] Tags gesetzt.—lorbass, Moderator

Wer kann mir helfen, ich komme in den Foren und mit den Beispielen nicht mehr weiter.

Gruß aus der Südpfalz
Zuletzt geändert von skydiver86 am So, 06.07.2014 20:23, insgesamt 1-mal geändert.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: mehrere Zellbereiche in mehren Tabellenblättern löschen

Beitrag von Stephan »

Hinweise zu StarBasic hat ja WiM bereits gegeben, ansonsten läuft doch Dein VBA-Code auch weitgehend direkt unter OO.

Folgendes funktioniert bei mir unter AOO 4.1.0:

Code: Alles auswählen

Option VBASupport 1
Private Sub Datenloeschen()
antwort = MsgBox("abc", vbOKCancel, "Vorsicht!")
If antwort = 2 Then GoTo schluss
GoTo loeschen
schluss:
Exit Sub

loeschen:
Worksheets("x").Activate
Worksheets("x").Range("a").ClearContents
Worksheets("x").Range("b").ClearContents
Worksheets("x").Range("b").Font.ColorIndex = 1
Worksheets("y").Activate
Worksheets("y").Range("d").ClearContents
Worksheets("y").Range("e").ClearContents
Worksheets("y").Range("e").Font.ColorIndex = 1
Worksheets("z").Activate
Worksheets("z").Range("f").ClearContents
Worksheets("z").Range("g").ClearContents
Worksheets("w").Activate

antwort = MsgBox("ok", vbOKCancel, "Vorsicht!")
If antwort = 2 Then GoTo schluss

Worksheets("y").Activate
Worksheets("y").Range("h").ClearContents
Worksheets("z").Activate
Worksheets("z").Range("i").ClearContents
Worksheets("w").Activate
End Sub
Gruß
Stephan
skydiver86
Beiträge: 6
Registriert: Mo, 23.06.2014 20:04

Re: mehrere Zellbereiche in mehren Tabellenblättern löschen

Beitrag von skydiver86 »

Hallo Stephan,
Du hast Recht, es läuft unter OO. Nur wenn ich die Datei im ods-Format abspeichere, klappt's beim Öffnen nicht mehr.

Das mit der MsgBox hab ich soweit schon gelöst, nur mit der Löschen der Daten in den Zellbereichen komme ich immer noch nicht weiter.

Gruß Elke
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: mehrere Zellbereiche in mehren Tabellenblättern löschen

Beitrag von Stephan »

Nur wenn ich die Datei im ods-Format abspeichere, klappt's beim Öffnen nicht mehr.
keine Ahnung warum, denn ich hatte ja bereits die Kompatibilitätsoption ergänzt:

Code: Alles auswählen

Option VBASupport 1

Gruß
Stephan
skydiver86
Beiträge: 6
Registriert: Mo, 23.06.2014 20:04

Re: mehrere Zellbereiche in mehren Tabellenblättern löschen

Beitrag von skydiver86 »

Hallo,
ich habe noch immer das Problem, daß ich die Zellbereiche nicht richtig ansprechen und den Inhalt löschen kann. Mit dem Makro wird nur der 1. Zellbereich auf dem Blatt Z gelöscht, der Rest bleibt bestehen. Was mache ich falsch?

Gruß Elke

Code: Alles auswählen

sub aktuellloeschen
dim ubound

document = thisComponent
sheetx = document.sheets.getByName("x")
arangesx() = array("a","b")
for i = 0 to ubound(aranges())
sheetx.getCellRangeByName(arangesx(i)).clearContents(5)
next i
CellRange = sheetx.getCellRangeByName("b")
CellRange.charColor = 1

sheety = document.sheets.getByName("y")
arangesy() = array("d","e")
for i = 0 to ubound(aranges())
sheety.getCellRangeByName(arangesy(i)).clearContents(5)
next i
CellRange = sheety.getCellRangeByName("e")
CellRange.charColor = 1

sheetz = document.sheets.getByName("z")
arangesz() = array("f","g")
for i = 0 to ubound(aranges())
sheetz.getCellRangeByName(arangesz(i)).clearContents(5)
next i

view = document.CurrentController
sheet = document.sheets.getByName ("w")
view.setActiveSheet(sheet)
end sub
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: mehrere Zellbereiche in mehren Tabellenblättern löschen

Beitrag von Stephan »

Was mache ich falsch?
es ist nicht zulässig ein reserviertes Schlüsselwort als Variablennamen zu deklarien, gleichzeitig führt das nicht sofort zu einem Fehler, sondern u.U. zu sinnvollen Ergebnissen wie auch hier.

unzulässig ist:

Code: Alles auswählen

dim ubound
und die Probleme entstehen weil nun der Kopf der Schleife:

Code: Alles auswählen

for i = 0 to ubound(aranges())
wie folgt bewertet wird:

erster Wert für i ist 0
die Obergrenze für i ist ubound(aranges())

weil aber ubound als Variable deklariert und aranges() ohne Inhalt wird das augenscheinlich ausgewertet als 0 womit dann i nur von 0 nach 0 läuft also immer 0 ist.
(Hierbei kann ich Dir nicht sagen warum dieses Problem nicht bereits bei den Blättern x und y auftritt.)

lösche somit die Zeile:

Code: Alles auswählen

dim ubound

Gruß
Stephan
skydiver86
Beiträge: 6
Registriert: Mo, 23.06.2014 20:04

Re: mehrere Zellbereiche in mehren Tabellenblättern löschen

Beitrag von skydiver86 »

Hallo Stephan,
super, danke, hat funktioniert.

Gruß Elke
Antworten