door coiske60 » zo nov 01, 2009 12:28 am
hallo gerard v
ik heb gedaan zoals je schreef:
mijn functie:
rem ----------------------------------------------------------------------
function STARTMACRO()
date_today3
end function
rem ----------------------------------------------------------------------
mijn macro:(1- vult datum in met NOW()
2- copy deze cel
3- paste special deze waarde als datum
sub date_today3
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 = "StringName"
args1(0).Value = "=NOW()"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args1())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args3(5) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Flags"
args3(0).Value = "D"
args3(1).Name = "FormulaCommand"
args3(1).Value = 0
args3(2).Name = "SkipEmptyCells"
args3(2).Value = false
args3(3).Name = "Transpose"
args3(3).Value = false
args3(4).Name = "AsLink"
args3(4).Value = false
args3(5).Name = "MoveMode"
args3(5).Value = 4
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args3())
end sub
de macro werkt als hij door de functie "startmacro" opgeroepen wordt: de datum van vandaag verschijnt als waarde in de cel. Ik start de functie "STARTMACRO" dan op met Run macro.
maar als ik (in cel B1271) de functie =IF(C1271="";"";STARTMACRO()) oproep (door iets in cel C1271 te schrijven en op "enter " te duwen), dan verschijnt de message : "Protected cells can not be modified", het programma blokkeert en ik moet het bericht 2 keer bevestigen vooraleer de cursor in de cel eronder verschijnt en het programma weer werkt.
Is het dat wat je bedoelt als je zegt dat de macro waarschijnlijk geen waarden zal invullen?
Om te beletten dat de macro (indien ik hem kan opstarten) meer dan één maal opgeroepen wordt zou ik de voorwaarde van de IF kunnen veranderen:
IF B1271 <>"" and C1271 = "" ;"";STARTMACRO()). (daardoor zal de macro s'anderendaags niet meer opstarten)
Maar moet die "AND" dan ook niet tussen haakjes staan? Hoe is de schrijfwijze dan precies?
In ieder geval al bedankt voor het begin van de oplossing
François
Open Office 3 - Windows NT