2.2k Aufrufe
in Tabellenkalkulation von hoax Einsteiger_in (91 Punkte)
Hallo Forum,

gerne hätte ich es so:

wenn ich in M9 ein Datum schreibe, so soll dieses Datum automatisch in T9 kopiert werden, wenn M9 gelöscht wird, so soll das Datum in T9 erhalten bleiben. Jedoch wenn in M9 ein neues Datum geschrieben wird, so soll das Datum in T9 überschrieben werden. Diese Funktion soll sich ab der Zeile 9 für Reihe M und T abwärts abspielen.

Da ich keinen Plan von VBA hab und diese Aufgabe mich Tage kosten würde, oder unlösbar wäre, fänd ich es schön, wenn das was das Programm da macht kurz erläutert wird.


Mit besten Grüßen

Hajo

4 Antworten

0 Punkte
von rainberg Profi (14.9k Punkte)
Hallo Hajo,

so müsste es funktionieren

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("M9:M65536")) Is Nothing Then
If IsDate(Target.Value) Then Target.Offset(0, 7).Value = Target.Value
End If
Application.EnableEvents = True
End Sub


Gruss
Rainer
0 Punkte
von
Da es bereits in diesem blatt mehrere Makros gibt, tritt folgender Fehler auf:

Fehler beim Kopilieren

Mehrdeutiger Name: Worksheet_Change


Makros:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 13 And Target.Row >= 8 And Target.Row <= 1000 And IsDate(Target) Then
With Worksheets("Legende")
Dim LoLetzte As Long
LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 13)), _
.Cells(.Rows.Count, 13).End(xlUp).Row, .Rows.Count) + 1
Rows(Target.Row).Copy .Cells(LoLetzte, 1)
Cells(Target.Row, 10) = ""
Cells(Target.Row, 11) = ""
Cells(Target.Row, 13) = ""
Cells(Target.Row, 14) = ""
Cells(Target.Row, 15) = ""
Cells(Target.Row, 16) = ""
End With
End If
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim varCol: varCol = "J:M"


' Wenn es nur eine best. Spalte sein soll:
' Eine der nachfolgenden Zeilen mit der gewünschten Spalte bestücken und einkommentieren!

' varCol = "I"
' varCol = "J"

If Target.Cells.Count = 1 Then
If varCol = "" Then varCol = Target.Column
If Not Intersect(Target, Columns(varCol)) Is Nothing Then
Cancel = True
Target.Value = Date
End If

End If

End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("M9:M65536")) Is Nothing Then
If IsDate(Target.Value) Then Target.Offset(0, 7).Value = Target.Value
End If
Application.EnableEvents = True
End Sub




Was kann man da machen?
0 Punkte
von
OK, ich habs!

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("M9:M65536")) Is Nothing Then
If IsDate(Target.Value) Then Target.Offset(0, 7).Value = Target.Value
End If
Application.EnableEvents = True
If Target.Column = 13 And Target.Row >= 8 And Target.Row <= 1000 And IsDate(Target) Then
With Worksheets("Legende")
Dim LoLetzte As Long
LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 13)), _
.Cells(.Rows.Count, 13).End(xlUp).Row, .Rows.Count) + 1
Rows(Target.Row).Copy .Cells(LoLetzte, 1)
Cells(Target.Row, 10) = ""
Cells(Target.Row, 11) = ""
Cells(Target.Row, 13) = ""
Cells(Target.Row, 14) = ""
Cells(Target.Row, 15) = ""
Cells(Target.Row, 16) = ""
End With
End If
End Sub
0 Punkte
von hoax Einsteiger_in (91 Punkte)
Hallo Rainer,

vielen Dank für die schnelle Antwort, funktioniert fabelhaft!


Gruß

Hajo

Deine Antwort

Dein angezeigter Name (optional):
Datenschutz: Deine Email-Adresse benutzen wir ausschließlich, um dir Benachrichtigungen zu schicken. Es gilt unsere Datenschutzerklärung.
Anti-Spam-Captcha:
Bitte logge dich ein oder melde dich neu an, um das Anti-Spam-Captcha zu vermeiden.
...