Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1792to1796
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

Zeitstempel

Zeitstempel
23.11.2020 10:14:27
Sarah
Morgen,
wie bekomme ich hier das Änderungsdatum der Datei in Spalte 20?
ich habs mit ".Cells(lngRow, 20).Value = FileDateTime(OWB)" probiert, aber dies hat nicht geklappt.
Public Sub test()
Dim strFile As String
Dim strPath As String
Dim strExt As String
Dim ZWB As Workbook
Dim OWB As Workbook
Dim lngRow As Long
strPath = "..."
strExt = "*.xlsx"
If strPath = "" Then Exit Sub
strFile = Dir$(strPath & strExt)
Do Until strFile = vbNullString
Set ZWB = ThisWorkbook
Set OWB = Workbooks.Open(Filename:=strPath & strFile)
'jede 10. Zeile eintragen
With ZWB.Worksheets("Import Bestellformular")
For lngRow = 2 To .Rows.Count Step 10
If IsEmpty(.Cells(lngRow, 1).Value) Then
'.Cells(lngRow, 20).Value = FileDateTime(OWB)
.Cells(lngRow, 1).Value = OWB.Worksheets(1).Range("C15").Value
.Cells(lngRow, 2).Value = OWB.Worksheets(1).Range("C60").Value
.Cells(lngRow, 3).Value = OWB.Worksheets(1).Range("D61").Value
.Cells(lngRow, 4).Value = OWB.Worksheets(1).Range("F61").Value
Workbooks(strFile).Worksheets(1).Range(Cells(32, 1), Cells(Range("O32").End( _
xlDown).Row, 15)).Copy                 'Daten mit zummengefügten zellen
.Cells(lngRow, 5).PasteSpecial xlPasteValues
Exit For
End If
Next
End With
OWB.Close SaveChanges:=False
strFile = Dir$ ' nächste Datei
Loop
Set OWB = Nothing
End Sub

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeitstempel
23.11.2020 10:28:13
Nepumuk
Hallo Sarah,
so:
.Cells(lngRow, 20).Value = FileDateTime(OWB.FullName)

Gruß
Nepumuk
AW: Zeitstempel
23.11.2020 11:54:50
Sarah
Vielen Danke, habe gerade noch etwas rumprobiert und deswegen kommt das positive Feedback so spät :)
hat super geklappt
AW: Zeitstempel
23.11.2020 13:09:37
Sarah
Ich hab jetzt in dem Tabellenblatt "Import Bestellformular" in Spalte C und D immer in jeder 10. Zeile, jeweils ein Datum.
Also in C2 steht ein Startdatum, und in D2 steht ein Enddatum.
in C12 steht ein Startdatum, und in D12 steht ein Enddatum.
C22, D22
usw...
Im Tabellenblatt "Weinachten" habe ich 2 Zellen (D2 und D3).
in D2 kann ich ein Startdatum manuell rein schreiben. In D3 ein Enddatum.
ich würde gerne ein Makro "bauen", dass mir dann prüft ob der Zeitraum von D2 und D3 in dem Zeitraum von c2/12/22/... und D2/12/22/... liegt. (ich weiß nicht genau wie man dies umsetzen kann, wahrscheinlich mit einer Schleife die von oben nach unten durchläuft und jede Zeile mal prüft).
Wenn diese Bedingung erfüllt ist, soll es dann testen ob in der Zeile in der die Bedingung erfüllt worden ist, auch etwas in spalte N und P steht.
wenn in N & P was steht, soll das makro ne msgbox zurück geben.
ansonsten wenn in N & P nichts steht, soll das makro eine andere msgbox ausgeben.
Hab da jetzt keinen Ansatz oder ähnliches dazu gefunden.
Kann mir da vielleicht jemand weiter helfen?
Anzeige
AW: Zeitstempel
23.11.2020 14:00:19
Nepumuk
Hallo Sarah,
Rechtsklick auf den Tabellenreiter der Weihnachtstabelle - Code anzeigen. Folgende Prozedur einfügen:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lngRow As Long
    Dim blnFound As Boolean
    If Target.Address = "$D$2" Or Target.Address = "$D$3" Then
        If IsDate(Cells(2, 4).Value) And IsDate(Cells(3, 4).Value) Then
            With Worksheets("Import Bestellformular")
                For lngRow = 2 To .Cells(.Rows.Count, 3).End(xlUp).Row Step 10
                    If IsDate(.Cells(lngRow, 3).Value) And IsDate(.Cells(lngRow, 4).Value) Then
                        If .Cells(lngRow, 3).Value >= Cells(2, 4).Value And _
                            .Cells(lngRow, 4).Value <= Cells(3, 4).Value Then
                            If Not IsEmpty(.Cells(lngRow, 14).Value) And _
                                Not IsEmpty(.Cells(lngRow, 14).Value) Then
                                blnFound = True
                                Call MsgBox("Hallo", vbInformation, "Information")
                            End If
                        End If
                    End If
                Next
            End With
            If Not blnFound Then Call MsgBox("HuHu", vbExclamation, "Hinweis")
        End If
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: Zeitstempel
23.11.2020 16:46:51
Sarah
Wow, ich hab jetzt etwas dran gearbeitet und versucht es zu verstehen.
Aber das ist schon nichts mehr für Anfänger schätze ich.
Kann ich das Makro auch in ein normales Modul haben und per Knopfdruck ausführen?
Habe versucht es selber hin zu bekommen, aber werde zum Teil nicht wirklich schlau draus, was ich da abändern muss.
AW: Zeitstempel
23.11.2020 16:52:48
Nepumuk
Hallo Sarah,
so:
Option Explicit

Public Sub SearchPeriod()
    Dim lngRow As Long
    Dim blnFound As Boolean
    If IsDate(Cells(2, 4).Value) And IsDate(Cells(3, 4).Value) Then
        With Worksheets("Import Bestellformular")
            For lngRow = 2 To .Cells(.Rows.Count, 3).End(xlUp).Row Step 10
                If IsDate(.Cells(lngRow, 3).Value) And IsDate(.Cells(lngRow, 4).Value) Then
                    If .Cells(lngRow, 3).Value >= Cells(2, 4).Value And _
                        .Cells(lngRow, 4).Value <= Cells(3, 4).Value Then
                        If Not IsEmpty(.Cells(lngRow, 14).Value) And _
                            Not IsEmpty(.Cells(lngRow, 14).Value) Then
                            blnFound = True
                            Call MsgBox("Hallo", vbInformation, "Information")
                        End If
                    End If
                End If
            Next
        End With
        If Not blnFound Then Call MsgBox("HuHu", vbExclamation, "Hinweis")
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: Zeitstempel
23.11.2020 17:50:18
Sarah
Vielen dank Nepumuk, freut mich dass du mir so tatkräftig zur Seite stehst.
AW: Zeitstempel
24.11.2020 11:03:54
Sarah
Guten Morgen, das Makro an sich ist Spitze.
Dafür schonmal ein großes Dankeschön.
Ich hab jetzt versucht das Makro abzuändern aber das klappt noch nicht ganz:
Public Sub SearchPeriod()
Dim lngRow As Long
Dim blnFound As Boolean
If IsDate(Worksheets("Weinachten").Cells(2, 4).Value) And IsDate(Worksheets("Weinachten"). _
Cells(3, 4).Value) Then
With Worksheets("Import Bestellformular")
For lngRow = 2 To .Cells(.Rows.Count, 3).End(xlUp).Row Step 10
If IsDate(.Cells(lngRow, 3).Value) And IsDate(.Cells(lngRow, 4).Value) Then
If .Cells(lngRow, 3).Value >= Worksheets("Weinachten").Cells(2, 4).Value  _
And _
.Cells(lngRow, 4).Value 
also sozusagen soll das Makro mir immer wenn das Datum passt, einfach für die jeweilige Zeile noch prüfen ob in N und P was drin steht. und je nachdem ob was drin steht oder nicht soll das Makro dann was ausführen.
und dann zur nächsten 10. Zeile switchen und da nochmal prüfen.
wenn mal das Datum nicht stimmt, soll es einfach in die nächste 10. zeile switchen und nichts für die Zeile ausführen wo das Datum nicht gestimmt hat.
Anzeige
AW: Zeitstempel
24.11.2020 12:10:25
Nepumuk
Hallo Sarah,
so?
Public Sub SearchPeriod()
    
    Dim lngRow As Long
    
    If IsDate(Worksheets("Weinachten").Cells(2, 4).Value) And IsDate(Worksheets("Weinachten").Cells(3, 4).Value) Then
        
        With Worksheets("Import Bestellformular")
            
            For lngRow = 2 To .Cells(.Rows.Count, 3).End(xlUp).Row Step 10
                
                If IsDate(.Cells(lngRow, 3).Value) And IsDate(.Cells(lngRow, 4).Value) Then
                    
                    If .Cells(lngRow, 3).Value >= Worksheets("Weinachten").Cells(2, 4).Value And _
                        .Cells(lngRow, 4).Value <= Worksheets("Weinachten").Cells(3, 4).Value Then
                        
                        If Not IsEmpty(.Cells(lngRow, 14).Value) And _
                            Not IsEmpty(.Cells(lngRow, 16).Value) Then
                            
                            Call MsgBox("N und P beschrieben", vbInformation, "Information")
                            
                        ElseIf Not IsEmpty(.Cells(lngRow, 14).Value) Then
                            
                            Call MsgBox("N beschrieben", vbInformation, "Information")
                            
                        ElseIf Not IsEmpty(.Cells(lngRow, 16).Value) Then
                            
                            Call MsgBox("P beschrieben", vbInformation, "Information")
                            
                        Else
                            
                            Call MsgBox("N und P leer", vbInformation, "Information")
                            
                        End If
                    End If
                End If
            Next
        End With
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: Zeitstempel
24.11.2020 12:36:13
Sarah
Ja genau so hab ich mir das in der Praxis vorgestellt.
Die Msgboxen werde ich demnächst dann durch Funktionen ersetzen.
Es zeigt mir nur leider aktuelle nichts an.
Also habe zum testen im Arbeitsblatt "Weinachten" jetzt in D2 "01.10.2019" und in D3 "31.10.2019" stehen.
und im Arbeitsblatt "Import Bestellformular" steht in C2 "01.09.2019" und in D2 "30.09.2021".
in C12 steht "01.10.2019" und in D12 "31.10.2019".
jetzt müsste ja theoretisch für beide Zeilen jeweils eine MSGBox aufploppen, da der datum bereicht aus dem Übersichtarbeitsblatt genau in dem bereicht von den zeilen 2 und 12 liegt.
Das passiert aber leider nicht.
Anzeige
AW: Zeitstempel
24.11.2020 12:45:15
Nepumuk
Hallo Sarah,
der 30.09.2021 ist nicht kleiner gleich 31.10.2019
Gruß
Nepumuk
AW: Zeitstempel
24.11.2020 12:53:17
Sarah
Stimmt, da hast du Recht.
Habe jetzt die Größer/Kleiner Zeichen geändert.
Jetzt funktioniert es prima, sorry.
If .Cells(lngRow, 3).Value .Cells(lngRow, 4).Value >= Worksheets("Weinachten").Cells(3, 4).Value Then
Ich danke dir erneut, das weiß ich wirklich zu schätzen.
Ohne Vorkenntnisse in diesem Bereich ist man verloren bei komplexen Makros.
Vielen dank.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige