Live-Forum - Die aktuellen Beiträge
Datum
Titel
15.07.2024 16:00:57
15.07.2024 15:41:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
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.

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
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
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?
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

322 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige