Per Makro leere Zeile abfragen und danach Text einfügen
Verfasst: Di, 13.12.2011 20:48
Hallo miteinander
Schon seit ein paar Wochen lese und lerne ich viel von euch hier in diesem Forum, nun frisch registriert möchte ich euch Profis schonmal vielmals danken, das ihr euch die Zeit und Geduld nehmt uns Neulingen zu helfen. Eine tolle Sache.
Mein Vorhaben:
Wir erstellen unsere Offerten per OOo-Calc. Damit wir nicht immer alles schreiben müssen, habe ich einen Dialog erstellt mit vielen Checkboxen. Das funktioniert super. Ausser bei der Sparte "Sonstiges", da ich davor eine leere Zeile will (wegen der Darstellung in der Offerte) und ich bekomm es nicht hin das Makro so zu schreiben das es funktioniert.
Bisher habe ich erst die Makros für die Checkboxen "Abholung", Lieferung" und "Stellen" zum testen geschrieben.
Beispiel:
Wenn ich alle Checkboxen im Dialog anklicke, dann wird "Abholung" von "Lieferung" überschrieben und "Lieferung" von "Stellen" wegen der leeren Zeile (Code1).
Bei "Code2" wird zwar nichts überschrieben aber es gibt keine leere Zeile. Ich weiss auch warum, aber nicht wie ich es beheben kann.
Ich hoffe ihr könnt es nachvollziehen.
Code1:
Code2
Irgendwie kommt mir der richtige Lösungsweg nicht in den Sinn.
Kann mir wer einen Denkanstoss geben oder evtl auch gleich ein Code-Beispiel? Ich bin für jede Hilfe dankbar.
PS: Ich kann mir vorstellen dass man den Code auch kürzer hinbekommt, ohne so viele "if-then", aber ich bin ehrlich gesagt schon froh das ich das schon so hingebracht habe
PSS: Wie kann ich den Code so einfügen wie ihr, das man den schön in Farbe sieht? Ist ja grässlich so als Quote und viel zu lang.
Gruss Dave
Schon seit ein paar Wochen lese und lerne ich viel von euch hier in diesem Forum, nun frisch registriert möchte ich euch Profis schonmal vielmals danken, das ihr euch die Zeit und Geduld nehmt uns Neulingen zu helfen. Eine tolle Sache.
Mein Vorhaben:
Wir erstellen unsere Offerten per OOo-Calc. Damit wir nicht immer alles schreiben müssen, habe ich einen Dialog erstellt mit vielen Checkboxen. Das funktioniert super. Ausser bei der Sparte "Sonstiges", da ich davor eine leere Zeile will (wegen der Darstellung in der Offerte) und ich bekomm es nicht hin das Makro so zu schreiben das es funktioniert.
Bisher habe ich erst die Makros für die Checkboxen "Abholung", Lieferung" und "Stellen" zum testen geschrieben.
Beispiel:
Wenn ich alle Checkboxen im Dialog anklicke, dann wird "Abholung" von "Lieferung" überschrieben und "Lieferung" von "Stellen" wegen der leeren Zeile (Code1).
Bei "Code2" wird zwar nichts überschrieben aber es gibt keine leere Zeile. Ich weiss auch warum, aber nicht wie ich es beheben kann.
Ich hoffe ihr könnt es nachvollziehen.
Code1:
Code: Alles auswählen
Sub Abholung
with thiscomponent.sheets(1)
sheet = ThisComponent.CurrentController.ActiveSheet
for i = 63 to 108
if .getcellbyposition(1 ,i).string = "Abholung ab Lager" then exit for
if .getcellbyposition(1 ,i).string <> "" then
end if
if .getcellbyposition(1 ,i).string = "" then
.getcellbyposition(1 ,i).string = "Abholung ab Lager"
exit for
end if
next
textcur=sheet.getcellbyposition(1,i).gettext().createtextcursor()
textcur.gotostart(true)
textcur.CharWeight=com.sun.star.awt.FontWeight.BOLD
if .getcellbyposition(1 ,i).string = "Abholung ab Lager" then
.getcellbyposition(2 ,i).string = "P"
end if
if .getcellbyposition(1 ,i).string = "Abholung ab Lager" then
.getcellbyposition(3 ,i).value = "1"
end if
if .getcellbyposition(1 ,i).string = "Abholung ab Lager" then
.getcellbyposition(4 ,i).value = "280"
end if
if .getcellbyposition(1 ,i).string = "Abholung ab Lager" then
.getcellbyposition(1 ,i+1).string = "Auslagerungspauschale."
end if
if .getcellbyposition(1 ,i).string = "Abholung ab Lager" then
.getcellbyposition(1 ,i+2).string = "Der Kunde holt den Jacuzzi im Lager"
end if
if .getcellbyposition(1 ,i).string = "Abholung ab Lager" then
.getcellbyposition(1 ,i+3).string = "der Firma xyz GmbH ab."
end if
end with
End Sub
Sub Lieferung
with thiscomponent.sheets(1)
sheet = ThisComponent.CurrentController.ActiveSheet
for i = 63 to 108
if .getcellbyposition(1 ,i).string = "Lieferung" then exit for
if .getcellbyposition(1 ,i).string <> "" then
end if
if .getcellbyposition(1 ,i).string = "" then
.getcellbyposition(1 ,i).string = "Lieferung"
exit for
end if
next
textcur=sheet.getcellbyposition(1,i).gettext().createtextcursor()
textcur.gotostart(true)
textcur.CharWeight=com.sun.star.awt.FontWeight.BOLD
if .getcellbyposition(1 ,i).string = "Lieferung" then
.getcellbyposition(2 ,i).string = "P"
end if
if .getcellbyposition(1 ,i).string = "Lieferung" then
.getcellbyposition(3 ,i).value = "1"
end if
if .getcellbyposition(1 ,i).string = "Lieferung" then
.getcellbyposition(4 ,i).value = "550"
end if
if .getcellbyposition(1 ,i).string = "Lieferung" then
.getcellbyposition(1 ,i+1).string = "Anlieferung bis Bordsteinkante."
end if
if .getcellbyposition(1 ,i).string = "Lieferung" then
.getcellbyposition(1 ,i+2).string = "Der Kunde organisiert die Mittel und"
end if
if .getcellbyposition(1 ,i+1).string = "Lieferung" then
.getcellbyposition(1 ,i+3).string = "Personen um den Jacuzzi abzuladen und "
end if
if .getcellbyposition(1 ,i+1).string = "Lieferung" then
.getcellbyposition(1 ,i+5).string = "aufzustellen."
end if
end with
End Sub
Sub Stellen
with thiscomponent.sheets(1)
sheet = ThisComponent.CurrentController.ActiveSheet
for i = 63 to 108
if .getcellbyposition(1 ,i).string = "Liefern und aufstellen" then exit for
if .getcellbyposition(1 ,i).string <> "" then
end if
if .getcellbyposition(1 ,i).string = "" then
.getcellbyposition(1 ,i).string = "Liefern und aufstellen"
exit for
end if
next
textcur=sheet.getcellbyposition(1,i+1).gettext().createtextcursor()
textcur.gotostart(true)
textcur.CharWeight=com.sun.star.awt.FontWeight.BOLD
if .getcellbyposition(1 ,i).string = "Liefern und aufstellen" then
.getcellbyposition(2 ,i).string = ""
end if
if .getcellbyposition(1 ,i).string = "Liefern und aufstellen" then
.getcellbyposition(3 ,i).string = ""
end if
if .getcellbyposition(1 ,i).string = "Liefern und aufstellen" then
.getcellbyposition(4 ,i).string = "offen"
end if
if .getcellbyposition(1 ,i).string = "Liefern und aufstellen" then
.getcellbyposition(1 ,i+1).string = "Der Aufstellort muss besichtigt werden und "
end if
if .getcellbyposition(1 ,i).string = "Liefern und aufstellen" then
.getcellbyposition(1 ,i+2).string = "wird danach separat offeriert."
end if
end with
End Sub
Code: Alles auswählen
Sub Abholung
with thiscomponent.sheets(1)
sheet = ThisComponent.CurrentController.ActiveSheet
for i = 63 to 108
if .getcellbyposition(1 ,i).string = "Abholung ab Lager" then exit for
if .getcellbyposition(1 ,i).string <> "" then
end if
if .getcellbyposition(1 ,i+1).string = "" then
.getcellbyposition(1 ,i+1).string = "Abholung ab Lager"
exit for
end if
next
textcur=sheet.getcellbyposition(1,i+1).gettext().createtextcursor()
textcur.gotostart(true)
textcur.CharWeight=com.sun.star.awt.FontWeight.BOLD
if .getcellbyposition(1 ,i+1).string = "Abholung ab Lager" then
.getcellbyposition(2 ,i+1).string = "P"
end if
if .getcellbyposition(1 ,i+1).string = "Abholung ab Lager" then
.getcellbyposition(3 ,i+1).value = "1"
end if
if .getcellbyposition(1 ,i+1).string = "Abholung ab Lager" then
.getcellbyposition(4 ,i+1).value = "280"
end if
if .getcellbyposition(1 ,i+1).string = "Abholung ab Lager" then
.getcellbyposition(1 ,i+2).string = "Auslagerungspauschale."
end if
if .getcellbyposition(1 ,i+1).string = "Abholung ab Lager" then
.getcellbyposition(1 ,i+3).string = "Der Kunde holt den Jacuzzi im Lager"
end if
if .getcellbyposition(1 ,i+1).string = "Abholung ab Lager" then
.getcellbyposition(1 ,i+4).string = "der Firma xyz GmbH ab."
end if
end with
End Sub
Sub Lieferung
with thiscomponent.sheets(1)
sheet = ThisComponent.CurrentController.ActiveSheet
for i = 63 to 108
if .getcellbyposition(1 ,i).string = "Lieferung" then exit for
if .getcellbyposition(1 ,i).string <> "" then
end if
if .getcellbyposition(1 ,i+1).string = "" then
.getcellbyposition(1 ,i+1).string = "Lieferung"
exit for
end if
next
textcur=sheet.getcellbyposition(1,i+1).gettext().createtextcursor()
textcur.gotostart(true)
textcur.CharWeight=com.sun.star.awt.FontWeight.BOLD
if .getcellbyposition(1 ,i+1).string = "Lieferung" then
.getcellbyposition(2 ,i+1).string = "P"
end if
if .getcellbyposition(1 ,i+1).string = "Lieferung" then
.getcellbyposition(3 ,i+1).value = "1"
end if
if .getcellbyposition(1 ,i+1).string = "Lieferung" then
.getcellbyposition(4 ,i+1).value = "550"
end if
if .getcellbyposition(1 ,i+1).string = "Lieferung" then
.getcellbyposition(1 ,i+2).string = "Anlieferung bis Bordsteinkante."
end if
if .getcellbyposition(1 ,i+1).string = "Lieferung" then
.getcellbyposition(1 ,i+3).string = "Der Kunde organisiert die Mittel und"
end if
if .getcellbyposition(1 ,i+1).string = "Lieferung" then
.getcellbyposition(1 ,i+4).string = "Personen um den Jacuzzi abzuladen und "
end if
if .getcellbyposition(1 ,i+1).string = "Lieferung" then
.getcellbyposition(1 ,i+5).string = "aufzustellen."
end if
end with
End Sub
Sub Stellen
with thiscomponent.sheets(1)
sheet = ThisComponent.CurrentController.ActiveSheet
for i = 63 to 108
if .getcellbyposition(1 ,i).string = "Liefern und aufstellen" then exit for
if .getcellbyposition(1 ,i).string <> "" then
end if
if .getcellbyposition(1 ,i+1).string = "" then
.getcellbyposition(1 ,i+1).string = "Liefern und aufstellen"
exit for
end if
next
textcur=sheet.getcellbyposition(1,i+1).gettext().createtextcursor()
textcur.gotostart(true)
textcur.CharWeight=com.sun.star.awt.FontWeight.BOLD
if .getcellbyposition(1 ,i+1).string = "Liefern und aufstellen" then
.getcellbyposition(2 ,i+1).string = ""
end if
if .getcellbyposition(1 ,i+1).string = "Liefern und aufstellen" then
.getcellbyposition(3 ,i+1).string = ""
end if
if .getcellbyposition(1 ,i+1).string = "Liefern und aufstellen" then
.getcellbyposition(4 ,i+1).string = "offen"
end if
if .getcellbyposition(1 ,i+1).string = "Liefern und aufstellen" then
.getcellbyposition(1 ,i+2).string = "Der Aufstellort muss besichtigt werden und "
end if
if .getcellbyposition(1 ,i+1).string = "Liefern und aufstellen" then
.getcellbyposition(1 ,i+3).string = "wird danach separat offeriert."
end if
end with
End Sub
Irgendwie kommt mir der richtige Lösungsweg nicht in den Sinn.
Kann mir wer einen Denkanstoss geben oder evtl auch gleich ein Code-Beispiel? Ich bin für jede Hilfe dankbar.
PS: Ich kann mir vorstellen dass man den Code auch kürzer hinbekommt, ohne so viele "if-then", aber ich bin ehrlich gesagt schon froh das ich das schon so hingebracht habe

PSS: Wie kann ich den Code so einfügen wie ihr, das man den schön in Farbe sieht? Ist ja grässlich so als Quote und viel zu lang.
Gruss Dave