Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1536to1540
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
Inhaltsverzeichnis

VBA Code zum Suchen von Daten im Arbeitsblatt

VBA Code zum Suchen von Daten im Arbeitsblatt
23.01.2017 20:02:38
Daten
Hallo,
Ich habe ein VBA Problem, vielleicht kann mir jemand helfen.
Der Fall liegt so das ich eine Arbeitsmappe erstellt habe in welcher auf einen Blick erkenntlich sein soll welcher Mitarbeiter (folgend MA genannt)unseres Betriebes welchen Handscanner benutzt (Scanner sind mit S001,S002 u.s.w. durchnummeriert).
Habe hierzu eine Auflistung der Scannernummern im Bereich A75:A150 angelegt,
In die "B" Spalte kommen direkt nebenan die entsprechenden MA-Namen.
Es soll nun so sein das ich über eine Befehlsschaltfläche in die InputBox die entsprechende Scannernummer eintrage und als Funktion die Spalte mit der Nr. markiert wird.
Habe bereits einen funktionierenden Code wie folgt:

Dim nummer As string
Dim zeile As Integer
nummer = InputBox("Bitte Scannernummer eingeben", "Eingabe")
zeile = Application.WorksheetFunction.Match(wert, Range("A1:A5000"), 0)
Rows(zeile).Select

Das Problem hiermit jedoch ist das bei einer Eingabe einer falschen Nr. oder vertippen direkt der Debug gestartet werden soll da ich in meinem Code keine Lösung hierfür habe.
Habe dann versucht dran "rumzubasteln" aber das will so auch nicht funktionieren, gebe ich nun einen korrekten Wert ein schließt er einfach die InputBox und nichts passiert, ist der Wert falsch: weiterhin Debug.
Hier der modifizierte Code:
Dim nummer As string
Dim zeile As Integer
nummer = InputBox("Bitte Scannernummer eingeben", "Eingabe")
If Application.WorksheetFunction.Match(wert, Range("A1:A5000"), 0) = True Then
zeile = Application.WorksheetFunction.Match(wert, Range("A1:A5000"), 0)
If Application.WorksheetFunction.Match(wert, Range("A1:A5000"), 0) = False Then Exit Sub
MsgBox ("Die Eingabe ist fehlerhaft oder existiert nicht")
Rows(zeile).Select
End If
End Sub

Wenn ich die Zeile:"Rows(zeile).Select" nach das "End If" setze beendet er nach jeder Eingabe einfach nur die Inputbox und nichts passiert.
Wenn da jetzt die fetten Fehler drin sind verzeiht mir bitte ich habe erst vor kurzem die Macht des VBA lieben gelernt und steh noch ganz am Anfang :)
Wäre echt toll wenn mir jemand in dieser Angelegenheit aushelfen kann.
Ich bedanke mich im Voraus für jeden Hilfeversuch.
Thomson
|->Wissen ist Macht

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Code zum Suchen von Daten im Arbeitsblatt
23.01.2017 20:32:48
Daten
Hallo Thomson,
wenn Du Deinen Code etwas umorganisierst (Einrücken hilft bei der Übersicht)
nummer = InputBox("Bitte Scannernummer eingeben", "Eingabe")
If Application.WorksheetFunction.Match(wert, Range("A1:A5000"), 0) = True Then
zeile = Application.WorksheetFunction.Match(wert, Range("A1:A5000"), 0)
Rows(zeile).Select
Else
MsgBox "Die Eingabe ist fehlerhaft oder existiert nicht"
End If

sollte es eigentlich wie gewünscht funktionieren.
Gruß der AlteDresdner
AW: VBA Code zum Suchen von Daten im Arbeitsblatt
23.01.2017 20:47:06
Daten
Danke für die schnelle Hilfe.
Habe den Code direkt mal schnell nach deiner Vorgabe umgestellt jedoch bekomme ich weiterhin direkt eine Fehlermeldung.
Um mal weiter ins Detail zu gehen, die Fehlermeldung lautet:
"Die Match-Eigenschaft des WorksheetFunction-Objektes kann nicht zugeordnet werden."
Starte ich den Debug wird die "If Application.WorksheetFunction.Match(wert, Range("A1:A5000"), 0) = True Then" Zeile als Fehlerursprung markiert.
Dies geschieht sowohl bei existenten Werten als aber auch bei falscheingaben.
Anzeige
AW: VBA Code zum Suchen von Daten im Arbeitsblatt
23.01.2017 21:03:05
Daten
Hallo Thomson,
dann schreib doch mal dein Tabellenblatt vor deine Range, oder benutze ein With - End With. Bei With - End With bitte die Punket vor der Range beachten.
nummer = InputBox("Bitte Scannernummer eingeben", "Eingabe")
With Sheets("Tabelle1") 'Blatt anpassen
If Application.WorksheetFunction.Match(wert, .Range("A1:A5000"), 0) = True Then
zeile = Application.WorksheetFunction.Match(wert, .Range("A1:A5000"), 0)
Rows(zeile).Select
Else
MsgBox "Die Eingabe ist fehlerhaft oder existiert nicht"
End If
End With
Gruß Werner
AW: VBA Code zum Suchen von Daten im Arbeitsblatt
23.01.2017 21:31:27
Daten
Vielen Dank für die Antwort.
Habe den Code angepasst, sieht nun wie folgt aus (zur besseren Übersicht) :
Dim nummer As String
Dim zeile As Integer
nummer = InputBox("Bitte Scannernummer eingeben", "Eingabe")
With Sheets("Tabelle1") 'Blatt anpassen
If Application.WorksheetFunction.Match(nummer, .Range("A1:A5000"), 0) = True Then
zeile = Application.WorksheetFunction.Match(nummer, .Range("A1:A5000"), 0)
Rows(zeile).Select
Else
MsgBox ("Die Eingabe ist fehlerhaft oder existiert nicht")
End If
End With
Nun ist es so das wenn ich eine Korrekte Angabe mache lediglich die MsgBox angezeigt wird, welche ja eigentlich bei Fehlern angezeigt werden soll.
Die entsprechende Zeile mit dem Wert wird aber nicht markiert (Ohne die "If" Befehle funktionierte das ja zumindest)
Bei Fehlerhafter Eingabe wird weiterhin der Laufzeitfehler "ausgespuckt".
Da das ganze ohne die "If´s" im Ursprung funktionierte (zumindest bei Korrekten Eingaben) nehme ich an das "Application.WorksheetFunction..." irgendwie nicht mit den If Befehlen "kompatibel" ist oder ich da einen Grundlegenden Fehler eingebaut habe.
Da ich die Codes beim Beitragsstart unübersichtlich vorgegeben habe hier auch der Ursprungscode nochmals vernünftig lesbar:
Dim nummer As string
Dim zeile As Integer
nummer = InputBox("Bitte Scannernummer eingeben", "Eingabe")
zeile = Application.WorksheetFunction.Match(nummer, Range("A1:A5000"), 0)
Rows(zeile).Select

Anzeige
AW: VBA Code zum Suchen von Daten im Arbeitsblatt
23.01.2017 21:40:25
Daten
...oder wäre es vielleicht eine möglichkeit das irgendein Wert als "Boolean" deklariert werden muss damit der If Befehl richtig funktioniert
AW: VBA Code zum Suchen von Daten im Arbeitsblatt
23.01.2017 22:00:06
Daten
Hallo Thomson,
Dim nummer As String
Dim zeile As Integer
nummer = InputBox("Bitte Scannernummer eingeben", "Eingabe")
With Sheets("Tabelle1") 'Blatt anpassen
On Error Resume Next
If Application.WorksheetFunction.Match(nummer, .Range("A1:A5000"), 0) = True Then
MsgBox ("Die Eingabe ist fehlerhaft oder existiert nicht")
Else
zeile = Application.WorksheetFunction.Match(nummer, .Range("A1:A5000"), 0)
.Rows(zeile).Select
End If
End With
On Error GoTo 0
Gruß Werner
Anzeige
AW: VBA Code zum Suchen von Daten im Arbeitsblatt
23.01.2017 22:26:55
Daten
Werner du bist der Beste.
Funktioniert jetzt 1A.
Vielen Dank, du hast mir einen harten Arbeitstag morgen soeben extrem erleichtert.
Thx
AW: Gerne u. Danke für die Rückmeldung.
23.01.2017 23:00:32
Werner
Hallo Thomson,
wobei das hier die "faule" Variante ist.
Gruß Werner
AW: Application.Match
23.01.2017 22:27:17
Gerd
Hi,
Ohnmacht, macht auch nix!
Zur Sache: Es geht ohne die Fehlerüberbrückung.
Und überraschend war es zwischenrein schon, wenn "Nummer" abgefragt und "Wert" verglichen worden ist. :?)
Sub test()
Dim strNummer As String, varZeile As Variant
strNummer = InputBox("Bitte Scannernummer eingeben", "Eingabe", "S001")
If Len(strNummer) = 0 Then MsgBox "IS NIX": Exit Sub
varZeile = Application.Match(strNummer, Range("A1:A5000"), 0)
If IsNumeric(varZeile) Then
Rows(CLng(varZeile)).Cells(1, 2).Select
Else
MsgBox "WAR NIX"
End If
End Sub
Gruß Gerd
Anzeige
AW: Application.Match
23.01.2017 22:31:51
Thomson
Hallo Gerd,
ja das war mir vor ein paar Minuten auch gerade Aufgefallen, hatte irgendwann ein Gemisch aus Alt und neu erzeugt^^
Auch wenn das Problem gerade gelöst wurde auch dir und natürlich auch an den Alten Dresdner Vielen Dank für Eure Mühe und eure Zeit.
Gruß
Thomason

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige