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
Suche Datum aus TextBox mit export
25.11.2020 17:01:53
Andre
Hallo zusammen,
als VBA-Anfänger hier eine Frage an die Experten:
In einem Tabellenblatt stehen in Spalte E unterschiedliche Datums-Werte (22.11.2020, 23.11.2020, usw.).
Die Spalte E im Tabellenblatt ist als "Standard" seitens Excel formatiert.
In einer Userform habe ich ein Textfeld, das automatisch beim Öffnen mit dem aktuelle Datum gefüllt wird (25.11.2020). Über Spinbuttons könnte ich jetzt auf und ab wählen und ein anderes Datum wählen.
Durch klicken eines Buttons möchte ich, dass alle Zeilen, die in Spalte E das Datum aus der Textbox haben, in eine neue Excel-Datei im Verzeichnis C:\Dokumente mit dem "Datum" als Dateiname gespeichert werden.
Bevor ich zum Export kam, scheiterte ich schon daran, dass es eine Fehlermeldung per Msg-Box gab "Das Datum 25112020 wurde nicht gefunden". Hier die Frage: wo sind die Punkte hin? Liegt es am Format der Spalte oder der Textbox?
Kann mir jemand auch mit dem Code für das Finden und Exportieren helfen?
Danke
Andre

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suche Datum aus TextBox mit export
25.11.2020 17:04:28
Hajo_Zi
Hallo Andre,
Textbox ist Text und in der Tabelle ist es eine Zahl (Datum)
Du hast keine Umwandlungsfunktion benutzt.

AW: Suche Datum aus TextBox mit export
25.11.2020 17:18:46
Nepumuk
Hallo Andre,
zeig mal deinen Code. Ich würde den Autofilter benutzen.
Gruß
Nepumuk
AW: Suche Datum aus TextBox mit export
25.11.2020 18:56:57
Andre
Hallo Nepumuk,
sieht bis dato so aus:
Sub kopieren()
With Sheets("WE-Scan")
LastRowSource = .Cells(Rows.Count, 5).End(xlUp).Row
For i = 1 To LastRowSource
If .Cells(i, 5) = TextBox_Datum Then
.Rows(i).Copy
With Sheets("Tabelle1")
For x = 1 To 1000
If .Cells(x, 5) = "" Then
Sheets("Tabelle1").Rows(x).PasteSpecial xlPasteValues
Exit For
End If
Next x
End With
End If
Next i
End With
End Sub

Anzeige
AW: Suche Datum aus TextBox mit export
25.11.2020 19:38:17
Nepumuk
Hallo Andre,
teste mal:
Private Sub kopieren()
    
    Dim lngRow As Long, lngEmtyRow As Long
    Dim dtmDate As Date
    
    If IsDate(TextBox_Datum.Text) Then
        
        dtmDate = CDate(TextBox_Datum.Text)
        
        With Sheets("Tabelle1")
            lngEmtyRow = .Cells(.Rows.Count, 5).End(xlUp).Offset(1, 0).Row
        End With
        
        With Worksheets("WE-Scan")
            
            For lngRow = 1 To .Cells(.Rows.Count, 5).End(xlUp).Row
                
                If .Cells(lngRow, 5).Value = dtmDate Then
                    
                    Call .Rows(lngRow).Copy
                    Call Worksheets("Tabelle1").Rows(lngEmtyRow).PasteSpecial(Paste:=xlPasteValues)
                    lngEmtyRow = lngEmtyRow + 1
                    
                End If
            Next
        End With
    Else
        Call MsgBox("Bitte ein gültiges Datum eingeben.", vbExclamation, "Hinweis")
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: Suche Datum aus TextBox mit export
25.11.2020 20:10:09
Andre
Hallo Nepumuk,
erst einmal Danke für Deine Zeit und Hilfe!
Den Code habe ich eingefügt und er funktioniert auch so weit. Allerdings dauert es für vier Zeilen ziemlich lange.
Ich habe die Datei mal hochgeladen:
https://www.herber.de/bbs/user/141844.xlsm
Vielleicht kann Du Dir das noch mal ansehen, und ggf auch so erweitern, dass die Daten direkt in eine neue Datei (excel oder csv) gespeichert werden?
Danke
Andre
AW: Suche Datum aus TextBox mit export
25.11.2020 20:32:14
Nepumuk
Hallo Andre,
so besser?
Option Explicit

Private Sub CommandButton_abbrechen_Click()
    
    Call Unload(Object:=Me)
    
End Sub

Private Sub CommandButton_Senden_Click()
    
    Dim strDate As String
    
    If IsDate(TextBox_Datum.Text) Then
        
        strDate = Replace(Format$(TextBox_Datum.Text, "mm.dd.yyyy"), ".", "/")
        
        Worksheets("Tabelle1").Cells.ClearContents
        
        With Worksheets("WE-Scan")
            
            Call .Rows(1).AutoFilter(Field:=5, Operator:= _
                xlFilterValues, Criteria2:=Array(2, strDate))
            
            Call .AutoFilter.Range.Copy
            
            Call Worksheets("Tabelle1").Cells(1, 1).PasteSpecial(Paste:=xlPasteValues)
            
            Call .Rows(1).AutoFilter
            
        End With
    Else
        Call MsgBox("Bitte ein gültiges Datum eingeben.", vbExclamation, "Hinweis")
    End If
    
    Call Unload(Object:=Me)
    
End Sub

Private Sub SpinButton1_SpinDown()
    
    TextBox_Datum.Text = CStr(CDate(TextBox_Datum.Text) - 1)
    
End Sub

Private Sub SpinButton1_SpinUp()
    
    TextBox_Datum.Text = CStr(CDate(TextBox_Datum.Text) - 1)
    
End Sub

Private Sub UserForm_Initialize()
    
    TextBox_Datum.Text = Date
    
End Sub

Gruß
Nepumuk
Anzeige
AW: Suche Datum aus TextBox mit export
25.11.2020 20:34:50
Nepumuk
Ooooooooooops,
beim SpinUp-Event ist an Stelle eines + ein - drin. Bitte korrigieren.
Gruß
Nepumuk
AW: Suche Datum aus TextBox mit export
25.11.2020 20:41:49
Nepumuk
Achso,
ich habe vergessen zu sagen dass in Spalte 5 kein Datum sondern Text der wie ein Datum aussieht steht. Wenn du per Userform-Textbox ein Datum in eine Tabelle schreibst, musst du dieses per per CDate konvertieren. um die vorhandenen Daten umzuwandeln, Spalte E markieren - Register "DATEN" - Gruppe "Datentools" - Button "Text in Spalten" - im Dialog auf den Button "Fertig stellen" klicken.
Gruß
Nepumuk
AW: Suche Datum aus TextBox mit export
25.11.2020 21:14:35
Andre
jetzt bekomme ich einen Laufzeitfehler 1004:
Die Autofilter-Methode des Range-Objektes konnte nicht ausgeführt werden.
Was bedeutet das?
Anzeige
AW: Suche Datum aus TextBox mit export
25.11.2020 22:42:37
Andre
in der Datei bekomme ich ebenfalls einen Fehler angezeigt.
Ich verstehe leider nicht warum.
AW: Suche Datum aus TextBox mit export
26.11.2020 10:02:22
Nepumuk
Hallo Andre,
dann weiß ich auch nicht weiter. Ich stell die Frage auf offen.
Gruß
Nepumuk
AW: Suche Datum aus TextBox mit export
26.11.2020 10:28:42
Andre
Hallo Nepumuk,
ich habe mit Hilfe eines noch gefundenen Codes und Teilen Deines Codes die Lösung gefunden.
Er sieht so aus:
Private Sub CommandButton_Senden_Click()
Dim myRange As Range
Dim strAddress As String
Dim lngCounter As Long
Dim strDate As String
If IsDate(TextBox_Datum.Text) Then
strDate = Replace(Format$(TextBox_Datum.Text, "mm.dd.yyyy"), ".", "/")
strDate = TextBox_Datum
End If
Set myRange = Worksheets("WE-Scan").Columns(5).Find(What:=TextBox_Datum, After:=Worksheets(" _
WE-Scan").Cells(Rows.Count, 5), LookAt:=xlWhole)
If Not myRange Is Nothing Then
strAddress = myRange.Address
Do
lngCounter = lngCounter + 1
With Worksheets("Tabelle1")
.Range(.Cells(.Cells(Rows.Count, 4).End(xlUp).Row + 1, 1), .Cells(.Cells(Rows. _
Count, 4).End(xlUp).Row + 1, 256)) = Worksheets("WE-Scan").Range(Worksheets("WE-Scan").Cells(myRange.Row, 1), Worksheets("WE-Scan").Cells(myRange.Row, 256)).Value
End With
Set myRange = Worksheets("WE-Scan").Columns(5).FindNext(myRange)
Loop While Not myRange Is Nothing And myRange.Address  strAddress
MsgBox CStr(lngCounter) & " Zeilen kopiert.", 64, "Information"
Else
MsgBox "Keine Daten zum kopieren gefunden.", 48, "Hinweis"
End If
'Sheets("Tabelle1").Select
'Sheets("Tabelle1").Copy
'ActiveWorkbook.SaveAs Filename:= _
'    "C:\Users\Vertriebsleitung\Documents\WE_" & TextBox_Datum.Value & ".xlsx", FileFormat:= _
_
'    xlOpenXMLWorkbook, CreateBackup:=False
'ActiveWindow.Close
End Sub

Ich möchte jetzt nur noch, dass vor dem Kopieren vom Blatt "WE-Scan" zu "Tabelle1" in Tabelle 1 ab Zeile 2 der Inhalt vorher gelöscht wird.
Habe es mit Rows("2:65536").ClearContents versucht, bekomme entweder ne Fehlermeldung oder es passiert nichts. Vermutlich an der falschen Stelle eingefügt. Kannst Du mir dabei noch helfen?
Anzeige
AW: Suche Datum aus TextBox mit export
26.11.2020 10:33:11
Nepumuk
Hallo Andre,
du musst die Tabelle mit angeben. Also:
Worksheets("Tabelle1").Rows("2:65536").ClearContents
Gruß
Nepumuk
AW: Suche Datum aus TextBox mit export
26.11.2020 14:07:50
Andre
Hallo Nepumuk,
auch das habe ich jetzt hinbekommen.
Eine letzte Sache noch: Wenn bei der Abfrage keine Daten gefunden werden, kommt ja die MessageBox "Keine Daten zum kopieren gefunden" als Hinweis.
Danach soll das Makro anhalten bzw. stoppen. Welchen Code benötige ich an welcher Stelle?
Zur Erläuterung: wenn Daten gefunden werden diese ja kopiert, eine neue Datei erzeugt und eine Mail öffnet sich zum Versenden der Datei.
Wenn aber keine Daten gefunden werden, erstellt Excel dennoch eine Datei und öffnet ein Mailfenster.
Gruß
Andre
Anzeige
AW: Suche Datum aus TextBox mit export
26.11.2020 14:11:10
Nepumuk
Hallo Andre,
pack das kopieren der Tabelle und das erstellen der Mail vor das Else.
Gruß
Nepumuk
AW: Suche Datum aus TextBox mit export
26.11.2020 15:41:26
Andre
funktioniert alles.
Danke!

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige