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

VBA-Suchmaske

Forumthread: VBA-Suchmaske

VBA-Suchmaske
08.02.2018 15:02:39
Geronimus
Hallo liebe Expertinnen und Experten,
ich habe ein Problem bezüglich einer Suchmaske, die scheinbar völlig willkürlich
funktioniert oder auch nicht.
Aufgabe der Maske ist es, nach Eingabe einer Zeichenfolge in ein Pop-Up-Fenster (Bsp 0911-456-987-C)
in vier Tabellenblättern meiner geöffneten Mappe zu suchen und die Zeile, in welcher die Zelle mit der gesuchten Zeichenfolge steht, grün zu markieren.
Es sollte noch gesagt sein, dass in allen vier Tabellen die Zeichenfolgen auf jeden Fall vorhanden sind.
Das Problem ist nun, dass die Suchmaske manchmal wie gewünscht in allen vier Tabellen ihre Arbeit verrichtet, manchmal nur in zweien oder dreien, manchmal in garkeiner,
obwohl wie schon gesagt, die Werte in allen Tabellen auftauchen.
Laut Compiler läuft alles einwandfrei und fehlerlos, ein Muster ist auch nicht erkennbar...
Bin für jeden Tipp dankbar!
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA-Suchmaske
08.02.2018 15:16:09
Peter(silie)
Hallo,
hier ein Tipp: Beispiel Mappe und Code reinstellen!
AW: VBA-Suchmaske
08.02.2018 15:28:23
Geronimus

Sub Suche()
Dim strSuche As String
Dim wsTab As Worksheet
Dim rngZelle As Range
Dim strZelle As String
strSuche = InputBox("Bitte Materialnummner eingeben, danach gewünschte Kategorie wählen:", " _
Kategorieübergreifende Suche")
If strSuche = "" Then Exit Sub
For Each wsTab In ActiveWorkbook.Worksheets
If (wsTab.Name = "Preise" Or wsTab.Name = "Material" Or wsTab.Name = "Verpackung" Or wsTab. _
Name = "Jahresmenge") Then
Set rngZelle = wsTab.Cells.Find(strSuche)
If Not rngZelle Is Nothing Then
strZelle = rngZelle.Address
Do
With rngZelle.EntireRow.Interior
If .ColorIndex = 43 Then
.ColorIndex = xlNone
Else
.ColorIndex = 43
End If
End With
Set rngZelle = wsTab.Cells.FindNext(After:=rngZelle)
Loop While rngZelle.Address  strZelle
End If
Set rngZelle = Nothing
End If
Next wsTab
End Sub

Das ist der Code, der in den vier Tabellenblättern "Preise", "Material", "Verpackung" und "Jahresmenge" suchen soll.
Anzeige
AW: VBA-Suchmaske
08.02.2018 15:44:24
Peter(silie)
Hallo,
du musste bei deinem loop auch abfragen ob rngZelle Nothing ist,
sonst sucht er nach Nichts.
Wenn du alle treffer markieren willst, dann solltest du bereits gefundene treffer
farblich nicht zurücksetzen
hier ein Code der gehen sollte:
Option Explicit
Private Const s1 As String = "Preise"
Private Const s2 As String = "Material"
Private Const s3 As String = "Verpackung"
Private Const s4 As String = "Jahresmenge"
Public Sub SearchValue()
Dim key As String, firstAddress As String
Dim rng As Range, c As Range
Dim ws As Worksheet
key = Application.InputBox("Bitte Materialnummner eingeben, " & _
"danach gewünschte Kategorie wählen:", _
"Kategorieübergreifende Suche")
If key = vbNullString Then Exit Sub
For Each ws In ThisWorkbook.Sheets
If ws.Name = s1 Or ws.Name = s2 Or ws.Name = s3 Or ws.Name = s4 Then
ws.UsedRange.Interior.Color = xlNone
Set rng = ws.UsedRange
Set c = rng.Find(key, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.EntireRow.Interior.Color = vbRed
Set c = rng.FindNext(c)
Loop While Not c Is Nothing And c.Address  firstAddress
End If
End If
Next ws
End Sub

Anzeige
AW: VBA-Suchmaske
14.02.2018 13:48:40
Geronimus
Vielen Dank für die Hilfe,
es hat funktioniert! Bin erst heute dazu gekommen, es im Büro einzubauen.
;

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