🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Alles zur Programmierung im LibreOffice.
-
mahaga66
- Beiträge: 3
- Registriert: Sa 17. Okt 2015, 20:54
Beitrag
von mahaga66 » Sa 17. Okt 2015, 21:00
Hallo,
ich verwende in Excel folgendes Makro:
Code: Alles auswählen
Private Sub Worksheet_Change(ByVal Target As Range)
Dim objCell As Range
If Not Intersect(Range("cd1:cd350"), Target) Is Nothing Then
Application.EnableEvents = False
For Each objCell In Intersect(Range("cd1:cd350"), Target)
objCell.Offset(0, 2) = Now()
Next
Application.EnableEvents = True
End If
End Sub
Meine Frage wäre ob es möglich ist dies in Libre nutzbar zu machen.
Kann mir da jemand helfen ??
Gruß Marcus
-
karolus
- * LO-Experte *
- Beiträge: 2539
- Registriert: Fr 10. Dez 2010, 10:01
Beitrag
von karolus » Sa 17. Okt 2015, 21:22
Hallo
Beschreib doch besser die eigentliche Aufgabenstellung, statt irgendeinen unkommentierten VBA-code abzuwerfen
In Calc gibts keine VBA-Magie die aus dem Namen der Sub ausliest auf welches Ereignis hin die Sub aufgerufen wird.
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
-
mahaga66
- Beiträge: 3
- Registriert: Sa 17. Okt 2015, 20:54
Beitrag
von mahaga66 » Sa 17. Okt 2015, 21:46
Hallo,
es soll ein Timestamp erzeugt werden mit datum und Uhrzeit.
Und zwar wenn in der Zelle Cd1:cd350 ein Wert geändert wird soll sich dieser Stamp aktualisieren.
Gruß Marcus
-
F3K Total
- * LO-Experte *
- Beiträge: 2501
- Registriert: So 10. Apr 2011, 10:10
Beitrag
von F3K Total » So 18. Okt 2015, 09:10
Moin,
mahaga66 hat geschrieben:... soll sich dieser Stamp aktualisieren.
Super, und wo soll "dieser Stamp" sein?
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO
-
karolus
- * LO-Experte *
- Beiträge: 2539
- Registriert: Fr 10. Dez 2010, 10:01
Beitrag
von karolus » So 18. Okt 2015, 13:46
F3K Total hat geschrieben:Moin,
mahaga66 hat geschrieben:... soll sich dieser Stamp aktualisieren.
Super, und wo soll "dieser Stamp" sein?
Gruß R
Das steht doch im Code:
(Also vmtl. die übernächste Zelle rechts von der geänderten)
Du kannst doch von Excel/VBA-"Kunden" nicht erwarten, das sie auf Anhieb mit brauchbaren Fragestellungen daherkommen!
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
-
F3K Total
- * LO-Experte *
- Beiträge: 2501
- Registriert: So 10. Apr 2011, 10:10
Beitrag
von F3K Total » So 18. Okt 2015, 19:25
Genau, vermutlich! Kann ich eben aus dem Code nicht lesen. Ist die Reihenfolge der Indizes (Spalte, Zeile) von OO bei MS-VBA umgekehrt (Zeile, Spalte)? Habe kein MS-Office und kann es nicht prüfen.
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO
-
mikele
- * LO-Experte *
- Beiträge: 1932
- Registriert: Mo 1. Aug 2011, 20:51
Beitrag
von mikele » So 18. Okt 2015, 20:08
Hallo,
@F3K Total: Über die Hürde musste ich mehrfach beim Wechsel von VBA ...
Allerdings ist objCell in dem Code ein nichtdefinierter Bereich, sprich das Programm dürfte nicht funktionieren (die geänderte Zelle ist ja Target).
Deine Frage ist aus meiner Sicht durchaus berechtigt ...
Gruß,
mikele
-
mahaga66
- Beiträge: 3
- Registriert: Sa 17. Okt 2015, 20:54
Beitrag
von mahaga66 » Di 20. Okt 2015, 18:23
Hallo,
ja die Stamp Angaben stehen 2 Spalten rechts neben den Angaben. Funzt in Excel klasse.
Gruß Marcus
-
F3K Total
- * LO-Experte *
- Beiträge: 2501
- Registriert: So 10. Apr 2011, 10:10
Beitrag
von F3K Total » Di 20. Okt 2015, 18:55
Gut,
dann versuch mal das folgende an das Tabellenereignis "Inhalt geändert" zu hängen:
Code: Alles auswählen
Private Sub Worksheet_Change(oCell)
if oCell.SupportsService("com.sun.star.sheet.SheetCell") then
oSheet = Thiscomponent.CurrentController.activeSheet
oRange = oSheet.getCellRangebyName("CD1:CD350")
if oRange.QueryIntersection(oCell.RangeAddress).count = 1 then
aCellAddress = oCell.Celladdress
nColumn = aCellAddress.Column
nRow = aCellAddress.Row
oTargetCell = oSheet.getcellbyPosition(nColumn+2,nRow)
oTargetCell.value = NOW()
endif
endif
End Sub
Die Spalte CD sollte als Timestamp formatiert sein.
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO
-
mikele
- * LO-Experte *
- Beiträge: 1932
- Registriert: Mo 1. Aug 2011, 20:51
Beitrag
von mikele » Di 20. Okt 2015, 18:58
Hallo,
mein Fehler - natürlich ist objcell definiert.
... und F3K Total war schneller

Gruß,
mikele
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.