Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Wert in anderem Tabellenblatt suchen Zeile in User

Wert in anderem Tabellenblatt suchen Zeile in User
05.03.2018 11:30:28
Stefan
Hallo!
Mal wieder komme ich nicht weiter.
Im Tabellenblatt "Start" in Zelle H3 steht mein Suchbegriff.
Jetzt soll das Makro im Tabellenblatt "Db" den Wert in der Spalte A suchen. Anschließend soll die Userform "Meldung" geöffnet werden und der Zeileninhalt des gefundenen Suchbegriffes
Spalte A in Textbox 1
Spalte B in TextBox 2 usw wiedergegeben werden.
Danke
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert in anderem Tabellenblatt suchen Zeile in User
05.03.2018 11:33:29
Hajo_Zi
benutze Find.
Set Rafound1 = Columns(1).Find("Erledigt", Range("A" & Rows.Count), xlFormulas, _
xlWhole, , xlNext)
Die meisten bauen Deine Datei nicht nach. Die Zeit hat schon jemand investiert.
Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.
Die meisten möchten es am Original testen um den gleichen Fehler zu erhalten.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Anzeige
AW: Wert in anderem Tabellenblatt suchen Zeile in User
05.03.2018 11:51:17
UweD
Hallo
in ein Modul da Aufrufmakro
Sub Makro1()
    Meldung.Show
End Sub

in die Userform (Meldung)
Private Sub UserForm_Initialize()
    Dim TB1, Tb2
    Set TB1 = Sheets("Start")
    Set Tb2 = Sheets("Db")
    
    Me.TextBox1 = TB1.Range("H3")
    Me.TextBox2 = Application.VLookup(TB1.Range("H3"), Tb2.Range("A:F"), 2, 0)
    Me.TextBox3 = Application.VLookup(TB1.Range("H3"), Tb2.Range("A:F"), 3, 0)
    'Me.TextBox4 = Application.VLookup(TB1.Range("H3"), Tb2.Range("A:F"), 4, 0) 
    'Me.TextBox5 = Application.VLookup(TB1.Range("H3"), Tb2.Range("A:F"), 5, 0) 
End Sub

LG UweD
Anzeige
AW: Wert in anderem Tabellenblatt suchen Zeile in User
05.03.2018 12:37:11
Stefan
Danke euch beiden für die schnelle Antwort.
Uwe dein Code funktioniert super.
Wenn ich jetzt was in einer der TextBoxen ändere wie Speicher ich das in der entsprechende Zeile ab bzw. wie ist der Code?
Stefan
AW: Wert in anderem Tabellenblatt suchen Zeile in User
05.03.2018 13:06:11
UweD
Hallo nochmal
so?
in ein Modul
Public Zeile As Double
Public TB1, TB2

Sub Makro1()
    Meldung.Show
End Sub

in die Userform
Private Sub TextBox2_Change()
    TB2.Cells(Zeile, 2) = Me.TextBox2.Value
End Sub

Private Sub TextBox3_Change()
    TB2.Cells(Zeile, 3) = Me.TextBox3.Value
End Sub

Private Sub UserForm_Initialize()
    On Error GoTo Fehler
    Set TB1 = Sheets("Start")
    Set TB2 = Sheets("Db")
    
    If WorksheetFunction.CountIf(TB2.Range("A:A"), TB1.Range("H3")) > 0 Then
        Zeile = WorksheetFunction.Match(TB1.Range("H3"), TB2.Range("A:A"), 0)
        
        Application.EnableEvents = False
        Me.TextBox1 = TB1.Range("H3")
        Me.TextBox1.Enabled = False 'ggf. auskommentieren 
        
        Me.TextBox2 = TB2.Cells(Zeile, 2)
        Me.TextBox3 = TB2.Cells(Zeile, 3)
        'Me.TextBox4 = TB2.Cells(Zeile, 4) 
        'Me.TextBox5 = TB2.Cells(Zeile, 5) 
    End If
    
    '*** Fehlerbehandlung 
    Err.Clear
Fehler:
    Application.EnableEvents = True
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear
End Sub

LG UweD
Anzeige
Fehlerbehandlng
05.03.2018 13:22:39
UweD
falls der Suchbegriff nicht gefunden wird kommt es zum Fehler Bei Änderung der Textboxen...( da die Zeile unbekannt ist.
Private Sub TextBox2_Change()
    TB2.Cells(Zeile, 2) = Me.TextBox2.Value
End Sub

Private Sub TextBox3_Change()
    TB2.Cells(Zeile, 3) = Me.TextBox3.Value
End Sub

Private Sub UserForm_Initialize()
    On Error GoTo Fehler
    Set TB1 = Sheets("Start")
    Set TB2 = Sheets("Db")
    
    Me.TextBox1.Enabled = False 'ggf. auskommentieren 
    
    If WorksheetFunction.CountIf(TB2.Range("A:A"), TB1.Range("H3")) > 0 Then
        Zeile = WorksheetFunction.Match(TB1.Range("H3"), TB2.Range("A:A"), 0)
        
        Application.EnableEvents = False
        Me.TextBox1 = TB1.Range("H3")
        
        Me.TextBox2 = TB2.Cells(Zeile, 2)
        Me.TextBox3 = TB2.Cells(Zeile, 3)
        'Me.TextBox4 = TB2.Cells(Zeile, 4) 
        'Me.TextBox5 = TB2.Cells(Zeile, 5) 
        Application.EnableEvents = True
    End If
    If Not Zeile > 0 Then ' Falls der Begriff nicht gefunden wird 
        MsgBox "'" & TB1.Range("H3") & "'    nicht gefunden"
        Me.TextBox2.Enabled = False
        Me.TextBox3.Enabled = False
    End If
    '*** Fehlerbehandlung 
    Err.Clear
Fehler:
    Application.EnableEvents = True
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear
End Sub

LG UweD
Anzeige
AW: Fehlerbehandlng
05.03.2018 13:55:57
Stefan
Danke!
Einfach spitze!
Funktioniert,so wie ich es wollte.
Stefan
Danke für die Rückmeldung owT
05.03.2018 14:24:53
UweD
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Wert in anderem Tabellenblatt suchen und anzeigen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und erstelle zwei Tabellenblätter: "Start" und "Db".

  2. Gib in die Zelle H3 des Blattes "Start" den Suchbegriff ein.

  3. Füge das folgende VBA-Makro in ein Modul ein:

    Sub Makro1()
        Meldung.Show
    End Sub
  4. Erstelle eine Userform namens "Meldung" und füge drei Textboxen hinzu: TextBox1, TextBox2 und TextBox3.

  5. Füge den folgenden Code in die Userform ein:

    Private Sub UserForm_Initialize()
        Dim TB1 As Worksheet, TB2 As Worksheet
        Set TB1 = Sheets("Start")
        Set TB2 = Sheets("Db")
    
        Me.TextBox1 = TB1.Range("H3")
        Me.TextBox2 = Application.VLookup(TB1.Range("H3"), TB2.Range("A:F"), 2, 0)
        Me.TextBox3 = Application.VLookup(TB1.Range("H3"), TB2.Range("A:F"), 3, 0)
    End Sub
  6. Um Änderungen in den Textboxen zu speichern, füge den folgenden Code hinzu:

    Private Sub TextBox2_Change()
        TB2.Cells(Zeile, 2) = Me.TextBox2.Value
    End Sub
    
    Private Sub TextBox3_Change()
        TB2.Cells(Zeile, 3) = Me.TextBox3.Value
    End Sub

Häufige Fehler und Lösungen

  • Fehler: Suchbegriff nicht gefunden
    Wenn der Suchbegriff nicht gefunden wird, erscheint eine Fehlermeldung. Um dies zu vermeiden, füge eine Fehlerbehandlung hinzu:

    If WorksheetFunction.CountIf(TB2.Range("A:A"), TB1.Range("H3")) > 0 Then
        Zeile = WorksheetFunction.Match(TB1.Range("H3"), TB2.Range("A:A"), 0)
    Else
        MsgBox "'" & TB1.Range("H3") & "' nicht gefunden"
    End If
  • Fehler: TextBox2 und TextBox3 sind deaktiviert
    Stelle sicher, dass die Textboxen aktiviert sind, nachdem der Suchbegriff gefunden wurde. Dies kann durch das Setzen der Enabled-Eigenschaft auf True erreicht werden.


Alternative Methoden

  • Excel-Formel verwenden: Du kannst auch die Excel-Formel SVERWEIS oder VLOOKUP direkt in einer Zelle verwenden, um den Wert aus einem anderen Tabellenblatt zu suchen. Zum Beispiel:

    =SVERWEIS(H3;Db!A:F;2;FALSCH)
  • Datenübertragung ohne VBA: Wenn du keine Makros verwenden möchtest, kannst du die Daten manuell kopieren oder eine Formel einsetzen, um den Wert aus dem anderen Tabellenblatt zu holen.


Praktische Beispiele

  • Daten aus "Db" suchen und anzeigen: Wenn in der Zelle H3 der Wert "Test" steht und dieser Wert in Spalte A des Blattes "Db" vorhanden ist, werden die entsprechenden Daten in den Textboxen angezeigt.

  • Werte aus mehreren Spalten: Um Werte aus mehreren Spalten zu übernehmen, erweitere die VLookup-Funktion entsprechend. Beispiel:

    Me.TextBox2 = Application.VLookup(TB1.Range("H3"), TB2.Range("A:F"), 2, 0)
    Me.TextBox3 = Application.VLookup(TB1.Range("H3"), TB2.Range("A:F"), 3, 0)

Tipps für Profis

  • Verwendung von Find: Anstelle von VLookup kannst du die Find-Methode verwenden, um den Suchbegriff in einer Spalte zu finden. Dies kann die Leistung verbessern, besonders bei großen Datensätzen.

    Dim FoundCell As Range
    Set FoundCell = TB2.Columns(1).Find(TB1.Range("H3").Value, LookIn:=xlValues)
  • Datenvalidierung: Implementiere eine Datenvalidierung, um sicherzustellen, dass nur gültige Werte in die Textboxen eingegeben werden.


FAQ: Häufige Fragen

1. Wie kann ich prüfen, ob ein Wert in einem anderen Tabellenblatt vorhanden ist?
Verwende die CountIf-Funktion, um zu prüfen, ob der Wert existiert:

If WorksheetFunction.CountIf(TB2.Range("A:A"), TB1.Range("H3")) > 0 Then
    ' Wert ist vorhanden
End If

2. Wie kann ich Daten aus einem anderen Tabellenblatt übernehmen?
Benutze VLookup, um Daten aus einem anderen Tabellenblatt zu suchen und zu übernehmen. Stelle sicher, dass die Daten in aufsteigender Reihenfolge sortiert sind, wenn du VLookup verwendest.

3. Gibt es eine Möglichkeit, die Zeile, in der der Wert gefunden wurde, anzuzeigen?
Ja, du kannst die Match-Funktion verwenden, um die Zeile des gefundenen Wertes zu ermitteln:

Zeile = WorksheetFunction.Match(TB1.Range("H3"), TB2.Range("A:A"), 0)

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