Seite 1 von 1

Hilfe bei rechnungsnummernmakro

Verfasst: Mo, 10.11.2008 21:54
von gurkende_gurke
Hallo, hab mich mal an ein Rechnungsnummernmakro rangewagt. Auch wenn es vielleicht einfachere Lösungen gäbe, hier ist das was ich bisher habe:

Code: Alles auswählen

sub ReNr
rem ----------------------------------------------------------------------
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 = "Nr"
args1(0).Value = 4

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

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

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

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "StringName"
args3(0).Value = "1"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args3())


end sub
Dies soll dazu führen, dass immer eine Zeile tiefer eine 1 hingeschrieben wird... Diese wäre dann mit einer Zählenwenn() funktion innerhalb meiner Rechnungsnummernzeile eine gute Rechnungsnummer. B1 ist ebenfalls eine Zählenwenn Funktion, =ZÄHLENWENN($A$1:$A$10000;1)+1 . Meine Überlegung war, dass dadurch immer eine Zeile Tiefer gegangen wird, als es 1en gibt, wodurch die 1 des aktuell ausgeführten Makros immer in die erste leere Zelle geschrieben wird. Allerdings ist $A$($B$1) keine gültige Zelle. Wie krieg ich das also zum laufen? :( Hilfe.

mfg gurke

Re: Hilfe bei rechnungsnummernmakro

Verfasst: Di, 11.11.2008 03:16
von Karolus
Hallo
Trag am Anfang zusätzlich ein:
'(das 4.Tabellenblatt hat den Index 3)
izeile = thisComponent.sheets(3).getcellrangebyname("B2").value
und die Adressangabe machst du mit:
args2(0).Value = "A" & izeile

Das ganze ist aber genausogut mit einem Dreizeiler möglich ohne zusätzliche ZÄHLENWENN-funktionen:

Code: Alles auswählen

Sub neue_Rechnungsnr
thisComponent.sheets(3).getcellrangebyname("B2").value =_
thisComponent.sheets(3).getcellrangebyname("B2").value + 1
end sub
Gruß Karo

Re: Hilfe bei rechnungsnummernmakro

Verfasst: Di, 11.11.2008 16:32
von gurkende_gurke
Vielen Dank. Klappt alles ganz wunderbar. :D

eine Frage hätt ich allerdings noch. Ist es möglich eine Zelle zu schützen auf die ein makro angewendet wird?
mit "Zelle Sperren" und "Tabelle schützen" geht das nicht, da dann kein Makro mehr auf die Zelle angewendet werden kann.

mfg gurke