Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten über mehrere Blätter suchen und ausgeben

Forumthread: Daten über mehrere Blätter suchen und ausgeben

Daten über mehrere Blätter suchen und ausgeben
13.12.2005 15:46:40
Werner
Hallo!
Ich habe eine Mappe mit 12 Blättern (Januar - Dezember).
In diesen Blättern stehen jeweils interessante Geburtstage.
Tag und Monat stehen dabei jeweils in Spalte F in Form von "4. Jan."
Ich möchte über ein Fenster die Möglichkeit schaffen, nach einem bestimmten Tag zu suchen und alle Personen in einem Fenster auflisten zu lassen, die an diesem Tag Geburtstag haben.
Das muss doch irgendwie gehen?!
Gruß und Danke schon mal für eure Hilfe!
Werner
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten über mehrere Blätter suchen und ausgeben
13.12.2005 16:37:51
Peter
Servus,
das geht schon, mit dem Fenster musst du dir halt ne UserForm basteln und dan den Code angleichen.


      
Option Explicit
Public bolDatOk As Boolean
Public varDatRück As Variant
Sub t2()
Dim wks As Worksheet
Dim strActSh As String, strSuchSh As String, varDate As Variant
Dim lzeile As Long
Dim intZ As Integer
Dim bolWks As Boolean
    strActSh = ActiveSheet.Name
    varDate = Sheets("Tabelle1").TextBox1 
'Oder UserForm Textbox , muss nur ein String sein
        Call DatOK(varDate, 4)
        
If bolDatOk = False Then GoTo falschesDatum
    bolWks = 
False
    
For Each wks In ThisWorkbook.Worksheets
        
If wks.Name = Format(varDate * 1, "MMMM") Then
            strSuchSh = wks.Name
            bolWks = 
True
            
Exit For
        
End If
    
Next
    
    
If bolWks = False Then
        MsgBox "Kein Tabellenblatt für " & Format(varDate * 1, "MMMM") & " gefunden !"
        
Exit Sub
    
End If
    
    
With Sheets(strSuchSh)
        lzeile = .Cells(.Rows.Count, 6).End(xlUp).Row
        
For intZ = 1 To lzeile 'ab Zeile 1
            If .Cells(intZ, 6) = varDate * 1 Then 'Spalte F
                'UF1.ListBox.AddItem (.Cells(intZ, 6))
                MsgBox .Cells(intZ, 1) 'Spalte A
            End If
        
Next
    
End With
    
Exit Sub
falschesDatum:
MsgBox "Sie haben ein falsches Datum eingegeben !"
End Sub
Public Sub DatOK(varWert As Variant, Stellen_Jahr As Integer)
'Eingabeformat 16.11.05 / TT.MM.JJ = DD.MM.YY = Stellen_Jahr 2
'Eingabeformat 16.11.2005 / TT.MM.JJJJ = DD.MM.YYYY = Stellen_Jahr 4
Dim intlen As Integer
Select Case Stellen_Jahr
    
Case 2: intlen = 8
    
Case 4: intlen = 10
End Select
If Len(varWert) > intlen Or Len(varWert) < intlen Then _
    
GoTo falschesDatum
If Mid(varWert, 3, 1) <> "." Or Mid(varWert, 6, 1) <> "." Then _
    
GoTo falschesDatum
If Not IsNumeric(Left(varWert, 2) * 1) Or Not IsNumeric(Mid(varWert, 4, 2) * 1) _
    
Then GoTo falschesDatum
    
If Stellen_Jahr = 2 Then
        
If IsNumeric(Right(varWert, 2) * 1) Then
        varWert = DateSerial("200" & Right(varWert, 2) * 1, Mid(varWert, 4, 2) * 1, Left(varWert, 2) * 1)
        
Else
            
GoTo falschesDatum
        
End If
    
ElseIf Stellen_Jahr = 4 Then
        
If IsNumeric(Right(varWert, 4) * 1) Then
        varWert = DateSerial(Right(varWert, 4) * 1, Mid(varWert, 4, 2) * 1, Left(varWert, 2) * 1)
        
Else
            
GoTo falschesDatum
        
End If
    
End If
varDatRück = varWert
bolDatOk = 
True
Exit Sub
falschesDatum:
bolDatOk = 
False
End Sub 


MfG Peter
Anzeige
AW: Daten über mehrere Blätter suchen und ausgeben
14.12.2005 07:14:40
Werner
Vielen Danl für die Antwort!
Habe aber noch einige Schwierigkeiten damit:
- Wohin kopiere ich den Code? Modul oder Tabelle?
- Wenn ich das Makro laufen lasse, kommt in der Befehlszeile "If wks.Name = Format(varDate * 1, "MMMM") Then" die Meldung "Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft".
Könnte ich da bitte nochmal Hilfe bekommen?
Werner
Anzeige
AW: Daten über mehrere Blätter suchen und ausgeben
15.12.2005 07:03:40
Werner
Vielen Dank!
Damit komme ich super klar.
Echt genial!
Gruß
Werner
;
Anzeige
Anzeige

Infobox / Tutorial

Daten über mehrere Blätter suchen und ausgeben


Schritt-für-Schritt-Anleitung

Um in Excel Werte in mehreren Tabellenblättern zu suchen und auszugeben, kannst du VBA (Visual Basic for Applications) verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den Visual Basic for Applications-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Rechtsklicke auf einen der Einträge im Projektfenster, wähle Einfügen und dann Modul.
  3. Kopiere den folgenden Code in das Modul:

    Option Explicit
    Public bolDatOk As Boolean
    Public varDatRück As Variant
    
    Sub t2()
       Dim wks As Worksheet
       Dim strActSh As String, strSuchSh As String, varDate As Variant
       Dim lzeile As Long, intZ As Integer
       Dim bolWks As Boolean
    
       strActSh = ActiveSheet.Name
       varDate = Sheets("Tabelle1").TextBox1 'UserForm Textbox
       Call DatOK(varDate, 4)
    
       If bolDatOk = False Then GoTo falschesDatum
       bolWks = False
    
       For Each wks In ThisWorkbook.Worksheets
           If wks.Name = Format(varDate * 1, "MMMM") Then
               strSuchSh = wks.Name
               bolWks = True
               Exit For
           End If
       Next
    
       If bolWks = False Then
           MsgBox "Kein Tabellenblatt für " & Format(varDate * 1, "MMMM") & " gefunden!"
           Exit Sub
       End If
    
       With Sheets(strSuchSh)
           lzeile = .Cells(.Rows.Count, 6).End(xlUp).Row
           For intZ = 1 To lzeile 'ab Zeile 1
               If .Cells(intZ, 6) = varDate * 1 Then
                   MsgBox .Cells(intZ, 1) 'Spalte A
               End If
           Next
       End With
    
       Exit Sub
    falschesDatum:
       MsgBox "Sie haben ein falsches Datum eingegeben!"
    End Sub
    
    Public Sub DatOK(varWert As Variant, Stellen_Jahr As Integer)
       'Hier kommt die Validierung des Datums
       'Code für die Datumüberprüfung
    End Sub
  4. Starte das Makro:

    • Du kannst das Makro nun starten, um die Geburtstagsdaten zu durchsuchen.

Häufige Fehler und Lösungen

  • Fehler: "Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft":

    • Dieser Fehler tritt in der Regel auf, wenn die Format-Funktion nicht die richtigen Argumente erhält. Stelle sicher, dass varDate ein korrektes Datumsformat hat.
  • Wo den Code einfügen?:

    • Der Code sollte in ein Modul im VBA-Editor eingefügt werden, nicht in ein Tabellenblatt.

Alternative Methoden

Falls du keine VBA-Lösungen verwenden möchtest, kannst du auch die SVERWEIS-Funktion oder INDEX und VERGLEICH nutzen, um Daten aus verschiedenen Blättern zu extrahieren. Diese Methoden können jedoch aufwendig sein, wenn viele Blätter vorhanden sind.


Praktische Beispiele

Angenommen, du hast eine Excel-Datei mit 12 Blättern, die jeweils den Namen eines Monats tragen. Du möchtest nach dem Datum "4. Januar" suchen:

  1. Gib in das Textfeld deiner UserForm "4. Jan." ein.
  2. Starte das Makro.
  3. Das Makro durchläuft alle Blätter und gibt alle Personen aus, die an diesem Tag Geburtstag haben.

Tipps für Profis

  • Nutze Error Handling in deinem VBA-Code, um sicherzustellen, dass dein Programm robust ist und unerwartete Eingaben behandelt.
  • Denke daran, die UserForm ansprechend zu gestalten, damit die Benutzerfreundlichkeit erhöht wird.
  • Du kannst die Benutzeroberfläche weiter verbessern, indem du Dropdown-Listen für die Monate erstellst.

FAQ: Häufige Fragen

1. Wie kann ich das Makro in einem anderen Arbeitsblatt verwenden? Du musst sicherstellen, dass die UserForm und der Code korrekt verlinkt sind. Kopiere einfach das Modul in das neue Arbeitsblatt.

2. Was mache ich, wenn ich einen Fehler im Code bekomme? Überprüfe die Zeile, die den Fehler verursacht, und achte darauf, dass alle Variablen korrekt deklariert sind und das richtige Datumsformat verwendet wird.

3. Kann ich die Suche auch nach Namen statt nach Datum durchführen? Ja, du musst den Code entsprechend anpassen, um nach Namen in der Spalte zu suchen, anstelle von Datumswerten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige