Hi,
ich habe in Excel ein VBA Code gehabt welcher mit bei einer Änderung einer bestimmten Zelle das Datum dieser Änderung in die Zelle daneben schreibt. Diesen Code habe ich versucht ins calc in integrieren, leider ihne Erfolg. OO Basic kennt z.B. den Begriff Range nicht.
Gibt es für OO einn ähnlichen Code oder kann mir einer beim übersetzen helfen ?
automatisches Datum bei Änderung
Moderator: Moderatoren
Na dann poste den doch mal. So ganz in´s Blaue ist das schwierig....kann mir einer beim übersetzen helfen
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Hier ist der Code wie er in Excel funktioniert ....
Wenn sich in H1:H205,K1:K205 etwas ändert wird das Datum in D geschrieben.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Const Datum_Spalte = 4
Dim ber As Range, z As Range
Set ber = Intersect(Target, Me.UsedRange, Range("H1:H205,K1:K205"))
If Not ber Is Nothing Then
Application.EnableEvents = False
For Each z In ber
Cells(z.Row, Datum_Spalte) = Date
Next z
Application.EnableEvents = True
End If
End Sub
Wenn sich in H1:H205,K1:K205 etwas ändert wird das Datum in D geschrieben.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Const Datum_Spalte = 4
Dim ber As Range, z As Range
Set ber = Intersect(Target, Me.UsedRange, Range("H1:H205,K1:K205"))
If Not ber Is Nothing Then
Application.EnableEvents = False
For Each z In ber
Cells(z.Row, Datum_Spalte) = Date
Next z
Application.EnableEvents = True
End If
End Sub
Hallo xmerlin
Evtl. sagt dir folgende Lösung zu:
Das Makro vergleicht die beiden Spalten mit den Nachbarspalten kopiert bei Unterschieden in die Nachbarspalte und schreibt das aktuelle Datum in Spalte D.
In Zeilen ohne Unterschied bleibt alles stehen.
Den Spaltenindex der Kopiespalten musst du entsprechend anpassen damit dir das Makro keine anderen Daten überschreibt.
Das Makro kannst du einer Schaltfläche und/oder dem Ereignis 'Dokument wurde geändert-Status' zuordnen. Evtl. musst du im Makro noch einen Tabellenschutz einbauen der manuelle Änderungen in den Kopiespalten und der Datumsspalte nicht erlaubt.
Gruß Karo
Evtl. sagt dir folgende Lösung zu:
Das Makro vergleicht die beiden Spalten mit den Nachbarspalten kopiert bei Unterschieden in die Nachbarspalte und schreibt das aktuelle Datum in Spalte D.
In Zeilen ohne Unterschied bleibt alles stehen.
Den Spaltenindex der Kopiespalten musst du entsprechend anpassen damit dir das Makro keine anderen Daten überschreibt.
Code: Alles auswählen
REM ***** BASIC *****
Sub Aenderungsdatum
odoc = ThisComponent
osheet = odoc.sheets(0) '1 Tabellenblatt
for z = 0 to 204
hzelle = osheet.getcellbyposition(7,z).formula 'Spalte H
hcopy = osheet.getcellbyposition(8,z).formula 'Spalte I als Kopie
kzelle = osheet.getcellbyposition(10,z).formula 'Spalte K
kcopy = osheet.getcellbyposition(11,z).formula 'Spalte L als Kopie
if hzelle <> hcopy or kzelle <> kcopy then
osheet.getcellbyposition(8,z).setformula(hzelle) 'Kopie nach I
osheet.getcellbyposition(11,z).setformula(kzelle) 'Kopie nach L
osheet.getcellbyposition(3,z).setstring(date) 'Datum nach D
end if
next z
End Sub
Gruß Karo