Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Mit VBA suchen und Ausgabe

Mit VBA suchen und Ausgabe
08.06.2017 08:59:38
Tina
Kann mir geholfen werden?
Ich habe mir eine Eingabemaske Erstellt mit Textfelder.
Im Textfeld mit Namen "txtArtikelNr" gebe ich die nr. 5 ein,
wo dann im Arbeitsblatt " Adressen " in Spalte A Zeile 8 bis 1000 gesucht wird.
Im Textfeld " txtArtikel " sollte da der Name aus dem Arbeitsblatt von Spalte B Eingefügt werden.
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit VBA suchen und Ausgabe
08.06.2017 09:25:41
Werner
Hallo Tina,
kommt die gesuchte Artikelnummer in Spalte A mehrfach vor? Und wenn ja, was dann?
Lade doch mal eine Beispielmappe hoch, mit deiner Userform und ein paar Beispieldaten.
Gruß Werner
AW: Mit VBA suchen und Ausgabe
08.06.2017 13:10:33
Tina
Hallo
Die Artikel Nr. gibt es nur 1x
Ich habe die Datei mal hochgeladen.
https://www.herber.de/bbs/user/114135.xls
Danke
Anzeige
Hier deine Mappe
08.06.2017 14:00:24
Max2
Hallo,
hier deine Mappe mit Extra Button und Code: https://www.herber.de/bbs/user/114138.xlsm
Hier nur Code des hinzugefügten Buttons:
Private Sub CommandButton2_Click()
Dim ws As Worksheet
Dim suche As String
Dim found As String
Dim rng As Range
Dim lRow As Long
Dim c
On Error Resume Next
suche = txtArtikelNr.Value
Set ws = ThisWorkbook.Sheets("Adressen")
lRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
Set rng = ws.Range(Cells(1, 1), Cells(lRow, 1))
With rng
Set c = .Find(suche)
If Not c Is Nothing Then found = ws.Cells(c.Row, 2).Value
End With
txtArtikel.Value = found
End Sub

Anzeige
Referenzierung
08.06.2017 14:25:54
Werner
Hallo Max,
Referenzierung hat nicht gepasst.
Private Sub CommandButton2_Click()
Dim ws As Worksheet
Dim suche As Long
Dim found As String
Dim rng As Range
Dim lRow As Long
Dim c
On Error Resume Next
suche = txtArtikelNr.Value
Set ws = ThisWorkbook.Sheets("Adressen")
lRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Set rng = ws.Range(ws.Cells(1, 1), ws.Cells(lRow, 1))
With rng
Set c = .Find(suche, , xlValues)
If Not c Is Nothing Then found = ws.Cells(c.Row, 2).Value
End With
txtArtikel.Value = found
End Sub
Gruß Werner
Anzeige
Oh Danke für den Hinweis! ..owT
08.06.2017 15:20:28
Max2

Danke für die Mühe
08.06.2017 15:28:09
Tina
Hallo Werner u. Max2
Ich Danke euch !
Aber was ist " Vlookup "
Und kann ich die Formel ändern,
so das auch der Lieferant angezeigt wird?
Anzeige
AW: Danke für die Mühe
08.06.2017 15:39:43
Max2
Hallo,
hier ein Link der alle VLookup Fragen beantworten sollte: https://support.office.com/en-us/article/VLOOKUP-function-0bbc8083-26fe-4963-8ab8-93a18ad188a1
und hier meine Version des Codes der Nachname und Vorname noch einfügt:
Private Sub CommandButton2_Click()
Dim ws As Worksheet
Dim suche As String
Dim rng As Range
Dim lRow As Long
Dim c
On Error Resume Next
suche = txtArtikelNr.Value
Set ws = ThisWorkbook.Sheets("Adressen")
lRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Set rng = ws.Range(ws.Cells(1, 1), ws.Cells(lRow, 1))
With rng
Set c = .Find(suche)
If Not c Is Nothing Then
txtArtikel.Value = ws.Cells(c.Row, 2).Value
txtVorname.Value = ws.Cells(c.Row, 4).Value
txtNachname.Value = ws.Cells(c.Row, 3).Value
End If
End With
End Sub

Anzeige
AW: Mit VBA suchen und Ausgabe
08.06.2017 10:29:08
Max2
Hallo,
hier ein Code mit zwei Varianten.
1ste: Sucht nur einmal danach
2te: Sucht bis alles gefunden.
Den Code musst du auf dich anpassen.
Option Explicit
Private ws As Worksheet
Private rng As Range
Private c
Private Sub find_once(ByVal suche As String, ByRef found As String)
With rng
Set c = .Find(suche)
found = c.Value
End With
End Sub
Private Sub find_often(ByVal suche As String, ByRef found As String)
Dim firstAddress
Dim arrFound() As Variant
Dim i As Integer
i = 0
With rng
Set c = .Find(suche)
If Not c Is Nothing Then
firstAddress = c.Address
Do
found = found & c.Value & "; "
Set c = .FindNext(c)
If c Is Nothing Then
Exit Do
End If
Loop While Not c Is Nothing And c.Address  firstAddress
End If
End With
End Sub
Private Function last_Row() As Long
last_Row = ws.Cells(Rows.Count, 1).End(xlUp).Row
End Function
Sub Main()
Dim suche As String
Dim found As String
suche = UserForm1.txtArtikelNr.Value
Set ws = ThisWorkbook.Sheets(1)
Set rng = ws.Range(Cells(1, 1), Cells(last_Row, 1))
Call find_once(suche, found)
Debug.Print found
Call find_often(suche, found)
Debug.Print found
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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