Wow das ist genial. Es funktioniert
Ich frage mich manchmal wo man solche Informationen findet. Ich glaube da sind meine Programmiertkenntisse einfach nicht ausreichend für. Hab ich mir schon lange vorgenommen die mal aufzufrischen
Ich habe noch eine Frage bezüglich Geschwindigkeit. Und zwar möchte ich natürlich, dass dieses Makro immer ausgeführt wird, wenn jemand einen Wert in der Tabelle verändert. Dafür habe ich beim Objekt 2 Möglichkeiten gefunden ein Makro auszuführen die für mich in Frage kommen.
Einmal beim draufklicken und einmal beim wenn der Mauszeiger das Objekt verlässt. Nun finde ich draufklicken doof weil man ja nach dem ändern nicht nochmal draufklickt. Aber Mauszeiger verlässt Objekt passiert sehr häufig einfach mal so. Da wird das Script dann total oft ausgeführt ohne Grund.
Gibt es da eine Möglichkeit, dass das Makro immer ausgeführt wird wenn man einen Wert im Objekt verändert hat?
Habe gefunden wo man das Makro ausführen kann wenn man es druckt. Das reicht mir.
Eine Sache habe ich noch, die mir wichtig wäre aber ich weiß nicht ob das geht.
Und zwar kann es sein, dass der Nutzer Zeilen zu der Tabelle hinzufügt. Dann stimmen ja leider meine Zellenangaben nicht mehr. Kann ich die Referenz irgendwie dynamisch setzen wie in Calc? Also so dass sie immer mitgeht wenn sich die Referenz verändert? Oder sonst einen anderen Workaround wie immer die letzte Zeile mit Werten drin benutzen das würde ja auch gehen ist nur nicht so elegant
So à la immer einen weiter gehen bis kein Wert drin und dann den davor nehmen.
Habe gesehen, dass man ja einfach die letzte Zeile mit einer Zahl in einer bestimmten Spalte suchen kann. Leider sind alle Makros die ich finde immer für Calc geschrieben und nicht für meinen speziellen Fall, dass ich innerhalb von Writer auf OLE Objekte zugreife.
Ich habe einen ganz simplen Loop geschrieben, der guckt ob ein Wert leer ist. Leider schlägt der auch schon an, wenn da einfach noch nichts reingeschrieben wurde. Gibt es da eine elegante Lösung die letzte Zeile in einer Spalte zu finden, die noch einen Wert enthält?
Am besten wäre natürlich die dynamische Referenzierung aus Calc aber ich wage zu bezweifeln,dass das geht
Vielen Vielen Dank dir nochmal. Du hast mir echt sehr geholfen. OLE Objekte sind einfach sehr viel funktionsfähiger als normale Tabellen in Writer. Jetzt kann ich die echt gut benutzen.
Ich habe nochmal eine Datei angehängt wo du genau mein Szenario sehen kannst. Dann kann man sich besser was darunter vorstellen.
Hier für die Leute mit dem gleichen Problem mein jetziger Code.
Code: Alles auswählen
Sub Main
x = ThisComponent.Drawpage.CreateEnumeration
Do While x.hasMoreElements()
akt = x.nextElement
If akt.Name = "Objekt1" Then
Msgbox akt.model.Sheets(0).getCellrangeByName("D11").Value
Summe1 = akt.model.Sheets(0).getCellrangeByName("D11").Value
End if
If akt.Name = "Objekt6" Then
Msgbox akt.model.Sheets(0).getCellrangeByName("B1").Value
akt.model.Sheets(0).getCellrangeByName("B1").Value = Summe1
Msgbox akt.model.Sheets(0).getCellrangeByName("B1").Value
End if
Loop
End Sub
Liebe Grüße
PS: Möchte jetzt nicht noch extra ein neues Topic hierfür aufmachen aber kennt jemand einen einfachen Weg innerhalb eines Writer Dokuments festzulegen, dass die erste Seite nicht gedruckt wird? Ich möchte da eine Eingabeseite machen, die später nicht gedruckt werden soll. Damit ich keine Formulare benutzen muss.
Wow das ist genial. Es funktioniert :)
Ich frage mich manchmal wo man solche Informationen findet. Ich glaube da sind meine Programmiertkenntisse einfach nicht ausreichend für. Hab ich mir schon lange vorgenommen die mal aufzufrischen :)
[d]Ich habe noch eine Frage bezüglich Geschwindigkeit. Und zwar möchte ich natürlich, dass dieses Makro immer ausgeführt wird, wenn jemand einen Wert in der Tabelle verändert. Dafür habe ich beim Objekt 2 Möglichkeiten gefunden ein Makro auszuführen die für mich in Frage kommen.
Einmal beim draufklicken und einmal beim wenn der Mauszeiger das Objekt verlässt. Nun finde ich draufklicken doof weil man ja nach dem ändern nicht nochmal draufklickt. Aber Mauszeiger verlässt Objekt passiert sehr häufig einfach mal so. Da wird das Script dann total oft ausgeführt ohne Grund.
Gibt es da eine Möglichkeit, dass das Makro immer ausgeführt wird wenn man einen Wert im Objekt verändert hat?[/d]
Habe gefunden wo man das Makro ausführen kann wenn man es druckt. Das reicht mir.
Eine Sache habe ich noch, die mir wichtig wäre aber ich weiß nicht ob das geht.
Und zwar kann es sein, dass der Nutzer Zeilen zu der Tabelle hinzufügt. Dann stimmen ja leider meine Zellenangaben nicht mehr. Kann ich die Referenz irgendwie dynamisch setzen wie in Calc? Also so dass sie immer mitgeht wenn sich die Referenz verändert? Oder sonst einen anderen Workaround wie immer die letzte Zeile mit Werten drin benutzen das würde ja auch gehen ist nur nicht so elegant ;)
So à la immer einen weiter gehen bis kein Wert drin und dann den davor nehmen.
Habe gesehen, dass man ja einfach die letzte Zeile mit einer Zahl in einer bestimmten Spalte suchen kann. Leider sind alle Makros die ich finde immer für Calc geschrieben und nicht für meinen speziellen Fall, dass ich innerhalb von Writer auf OLE Objekte zugreife.
Ich habe einen ganz simplen Loop geschrieben, der guckt ob ein Wert leer ist. Leider schlägt der auch schon an, wenn da einfach noch nichts reingeschrieben wurde. Gibt es da eine elegante Lösung die letzte Zeile in einer Spalte zu finden, die noch einen Wert enthält?
Am besten wäre natürlich die dynamische Referenzierung aus Calc aber ich wage zu bezweifeln,dass das geht ;)
Vielen Vielen Dank dir nochmal. Du hast mir echt sehr geholfen. OLE Objekte sind einfach sehr viel funktionsfähiger als normale Tabellen in Writer. Jetzt kann ich die echt gut benutzen.
Ich habe nochmal eine Datei angehängt wo du genau mein Szenario sehen kannst. Dann kann man sich besser was darunter vorstellen.
Hier für die Leute mit dem gleichen Problem mein jetziger Code.
[code]
Sub Main
x = ThisComponent.Drawpage.CreateEnumeration
Do While x.hasMoreElements()
akt = x.nextElement
If akt.Name = "Objekt1" Then
Msgbox akt.model.Sheets(0).getCellrangeByName("D11").Value
Summe1 = akt.model.Sheets(0).getCellrangeByName("D11").Value
End if
If akt.Name = "Objekt6" Then
Msgbox akt.model.Sheets(0).getCellrangeByName("B1").Value
akt.model.Sheets(0).getCellrangeByName("B1").Value = Summe1
Msgbox akt.model.Sheets(0).getCellrangeByName("B1").Value
End if
Loop
End Sub[/code]
Liebe Grüße
PS: Möchte jetzt nicht noch extra ein neues Topic hierfür aufmachen aber kennt jemand einen einfachen Weg innerhalb eines Writer Dokuments festzulegen, dass die erste Seite nicht gedruckt wird? Ich möchte da eine Eingabeseite machen, die später nicht gedruckt werden soll. Damit ich keine Formulare benutzen muss.