automatisches Datum bei Änderung

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

xmerlin
Beiträge: 4
Registriert: Mo, 15.01.2007 22:49

automatisches Datum bei Änderung

Beitrag von xmerlin »

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 ?
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

kann mir einer beim übersetzen helfen
Na dann poste den doch mal. So ganz in´s Blaue ist das schwierig....

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
xmerlin
Beiträge: 4
Registriert: Mo, 15.01.2007 22:49

Beitrag von xmerlin »

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
xmerlin
Beiträge: 4
Registriert: Mo, 15.01.2007 22:49

Beitrag von xmerlin »

Ich habe bis jetzt immer noch nichts gefunden....bitte um Hilfe !!!
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Beitrag von Karolus »

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.

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
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
Antworten