Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1820to1824
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel VBA

Excel VBA
16.03.2021 14:49:07
Envy
Hallo, ich würde gerne wissen wie ich es hinbekomme die VBA Kommentare, die sich im Anhang _
befinden, auzuführen.Der Obere Code mit der Zeit funktioniert aber der Zweite Code mit dem _
Datum läuft nicht ?

Private Sub Worksheet_Change(ByVal Target As Range)
'Quelle: Ransi
If Intersect(Target, Range("C1:C100")) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub 'Bearbeiten mehrerer Zeilen wird abgefangen
If Target = "" Then
Target.Offset(0, 1).ClearContents
Else:
Target.Offset(0, 1) = CDate(Format(Now, "hh:mm:ss"))
End If
End Sub


Private Sub Oköö(ByVal Target As Range)
''''Quelle: Ransi
If Intersect(Target, Range("C1:C100")) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub 'Bearbeiten mehrerer Zeilen wird abgefangen
If Target = "" Then
Target.Offset(0, 2).ClearContents
Else:
Target.Offset(0, 2) = CDate(Format(Now, "dd.mm.yyyy"))
End If
End Sub


6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA
16.03.2021 14:58:21
Nepumuk
Hallo,
an Stelle von CDate(Format(Now, "hh:mm:ss")) einfach Time und an Stellen von CDate(Format(Now, "dd.mm.yyyy")) einfach Date.
Gruß
Nepumuk

AW: Excel VBA
16.03.2021 16:55:42
Envy
Hallo, danke für deine Antwort, es klappt leider nicht.
Private Sub Worksheet_Change(ByVal Target As Range)
'Quelle: Ransi
If Intersect(Target, Range("C1:C100")) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub 'Bearbeiten mehrerer Zeilen wird abgefangen
If Target = "" Then
Target.Offset(0, 1).ClearContents
Else:
Target.Offset(0, 1) = CTime(Format(Now, "hh:mm:ss"))
End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
'Quelle: Ransi
If Intersect(Target, Range("C1:C100")) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub 'Bearbeiten mehrerer Zeilen wird abgefangen
If Target = "" Then
Target.Offset(0, 1).ClearContents
Else:
Target.Offset(0, 1) = CDate(Format(Now, "dd.mm.yyyy"))
End If
End Sub


Anzeige
AW: Excel VBA
16.03.2021 17:07:46
Nepumuk
Hallo,
teste mal:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim objRange As Range, objCell As Range
    Set objRange = Intersect(Target, Range("C1:C100"))
    If Not objRange Is Nothing Then
        Application.EnableEvents = False
        For Each objCell In objRange
            If IsEmpty(objCell.Value) Then
                objCell.Offset(0, 1).ClearContents
            Else
                objCell.Offset(0, 1).Value = Date
            End If
        Next
        Set objRange = Nothing
        Application.EnableEvents = True
    End If
End Sub

Gruß
Nepumuk

Anzeige
AW: Excel VBA
16.03.2021 20:11:24
Envy
Hallo, hab es jetzt so eingetippt, funktioniert trotzdem nicht. Wenn ich beide Formel separat eintrage funktioniert es, muss ich eine verknüpfung erstellen ?
ich versuch Ihnen mal mein vorhaben zu erklären, vielleicht können Sie mir dann besser helfen. Sobald ich in Zelle C1 bis 100 etwas eintrage möchte ich in Zelle D die Uhrzeit haben und in Zelle E das Datum.
Gruß Batu
Private Sub Worksheet_Change(ByVal Target As Range)
'Quelle: Ransi
If Intersect(Target, Range("C1:C100")) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub 'Bearbeiten mehrerer Zeilen wird abgefangen
If Target = "" Then
Target.Offset(0, 1).ClearContents
Else:
Target.Offset(0, 1) = CDate(Format(Now, "hh:mm:ss"))
End If
End Sub

Private Sub Worksheet(ByVal Target As Range)
Dim objRange As Range, objCell As Range
Set objRange = Intersect(Target, Range("C1:C100"))
If Not objRange Is Nothing Then
Application.EnableEvents = False
For Each objCell In objRange
If IsEmpty(objCell.Value) Then
objCell.Offset(0, 2).ClearContents
Else
objCell.Offset(0, 2).Value = Date
End If
Next
Set objRange = Nothing
Application.EnableEvents = True
End If
End Sub


Anzeige
AW: Excel VBA
16.03.2021 20:33:09
Yal
Hallo Envy,
die erste Function ist ein Erreignis. Worksheet_Change wird angestossen, wenn der Inhalt der Zelle geänert wurde.
die zweite "Private Sub Worksheet(..)" ist eine Function, deren Name ein reservierte Wort ist. Und kann -bzw. sollte- nicht funktionieren.
Da die beiden das gleiche machen, warum nicht zusammenführen?
Private Sub Worksheet_Change(ByVal Target As Range)
'Quelle: Ransi
If Intersect(Target, Range("C1:C100")) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub 'Bearbeiten mehrerer Zeilen wird abgefangen
Application.EnableEvents = False
If Target = "" Then
Target.Range("B1:C1").ClearContents 'Achtung: relative "B1:C1"!! 2 ersten Zellen rechts  _
von Target
Else
Target.Offset(0, 1) = Date
Target.Offset(0, 2) = Time
End If
Application.EnableEvents = True
End Sub
Darüber hinaus, da Du damit die Inahlt eine Zelle änderst, und diese Function startet, wenn der inhalt eine Zelle geändert wird, musst Du mit "Application.EnableEvents = False" die Wiederausführung (Rekursivität) blockieren.
VG
Yal

Anzeige
AW: Excel VBA
16.03.2021 21:30:38
Envy
Danke :)))))
LG Batu

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige