Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1604to1608
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-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!

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.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige