Makro selektiert auslösen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

MaximilianWe
**
Beiträge: 29
Registriert: Mo, 08.11.2010 20:25

Makro selektiert auslösen

Beitrag von MaximilianWe »

IUch befasse mich mich folgendem Gedanken:

Ich rufe eine TAbelle auf arbeite dort (neu eingeben, ergänen usw,) Während dieser SDession möchte ich dazwischen z.B. ein Makro aufrufen, das aus den aktuellen Eingaben Daten errechnet oder an anderer Stelle der >TAbelle einsetzt und ich kann anschließend manuell weiterarbeiten und im wewiteren Verlauf wieder ein Makro aufrufen und dann weiter arbeiten.
Also Tabelle offnen/ersdtellen> in der TAbelle manuell opeerieren > durch Tastendruck ein Makro aufrufen das in der TAbelle Operationen auslöst > kehrt automatisch in den Bearbeitungsmodus zurück > usf.
Schwebt mir vor, ist aber wohl ein Traumwunsch?

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

Re: Makro selektiert auslösen

Beitrag von Stephan »

Schwebt mir vor, ist aber wohl ein Traumwunsch?
Nein, im Normalfall nicht. Ob im Detail genau das umzusetzen ist was Du haben willst hängt natürlich von den Anforderungen ab.

Im Anhang ein Beispiel das nur auf Tastendruck einige Werte kopiert und löscht und eine Zelle in den Edit-Modus versetzt.

Hinweis:
der Code im Beispiel ist nicht sehr elegant, erfüllt aber seinen Zweck:

Code: Alles auswählen

sub Main2
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")

dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())

i = 10
Do
	i = i + 1
	tmp = ThisComponent.Sheets(0).getCellByPosition(3, i).FormulaLocal
Loop While tmp <> ""
With ThisComponent.Sheets(0)
	.getCellByPosition(3, i).String = .getCellByPosition(0, 1).String
	.getCellByPosition(4, i).String = .getCellByPosition(1, 1).String
	.getCellByPosition(0, 1).FormulaLocal = ""
	.getCellByPosition(1, 1).FormulaLocal = ""
End With

dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$2"

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

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:SetInputMode", "", 0, Array())


end sub

Gruß
Stephan
Dateianhänge
Beispiel.ods
(10.79 KiB) 108-mal heruntergeladen
Antworten