Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Prozedur zum Suchen einer Straße





Frage

Hi, was muss ich eingeben damit beim Eingeben der Straße z.B. "Teststr. auch Test" langt um mir alle Straßen azeigen zu lassen die mit "Test" anfangen? Und wie kann ich mir das Ergebnis dann extra anzeigen lassen, damit dies dann evtl. ausgedruckt werden kann? [code][b] Private Sub cmdStreetSearch_Click() Dim Zelle As Range Dim Straße As String Straße = InputBox("Bitte Straße eingeben!", "Erdgasfahrzeuge") If Straße = "" Then Exit Sub ActiveSheet.Range("A1:N65536").Select For Each Zelle In Selection If Zelle = Straße Then Zelle.Select Exit Sub End If Next Zelle MsgBox "Straße nicht vorhanden!" [/b][/code] Danke für evtl. Hilfe. Gruzz softwareRE

Antwort 1 von piano

Hallo
Hier eine Möglichkeit:
Private Sub cmdStreetSearch_Click()

Dim Zelle As Range
Dim Straße As String
Dim found As Boolean
Dim Posfound As Integer
Dim Inhalt
Sheets(2).Activate
Cells.Clear
Sheets(1).Activate
Straße = UCase(InputBox("Bitte Straße eingeben!", "Erdgasfahrzeuge"))
If Straße = "" Then Exit Sub
Straße =Trim(Straße )
ActiveSheet.Range("A1:N65536").Select
found = False
For Each Zelle In Selection
If UCase(Left(Zelle, Len(Straße))) = Straße Then
found = True
Zelle.Select
Inhalt = Selection.Value
Sheets(2).Activate
Posfound = Posfound + 1
Cells(Posfound, 1).Value = Inhalt
End If
Sheets(1).Activate
Next Zelle
If Not found Then
MsgBox "Straße nicht vorhanden!"
Else
Sheets(2).Activate
End If
End Sub
 

Ich habe auch Probleme mit Groß/Kleinschreibung ausgeschalten. Ergebnisliste in Tabelle2.

Antwort 2 von coros

Hi an alle,

und hier noch eine Lösung von mir, so wie ich sie oft in Excel bei mir mit einbaue.

Option Explicit

Sub Suchen_Click()
Dim Suchbegriff As String, gefundener_Begriff As Range, firstAddress As String, gefunden() As String, _
index1 As Integer, index2 As Integer, text As String, schalter As Integer, _
Blattname As String, Zeile As Long
schalter = 4
text = "Die nächste Übereinstimmung anzeigen?"
Do
Suchbegriff = InputBox("Mindestens die 3 ersten Buchstaben des Suchbegriffes oder kompletten Suchbegriff eingeben. Groß-/Kleinschreibung ist egal.", "Suchen")
If Suchbegriff = "" Or Len(Suchbegriff) = 0 Then Exit Sub
Loop Until Len(Suchbegriff) > 2
Set gefundener_Begriff = Range("A1:IV65536").Find(what:=Suchbegriff, lookat:=xlPart, LookIn:=xlValues, MatchCase:=False)
If gefundener_Begriff Is Nothing Then
Beep
MsgBox "Suchbegriff wurde nicht gefunden! Es ist aber nicht 100% sicher, dass der gesuchte Begriff sich nicht in der Tabelle befindet. Überprüfen Sie daher bitte nochmal die Schreibweise und geben den Suchbegriff erneut ein, oder suchen Sie den Begriff manuell in der Tabelle."
Else
Blattname = ActiveSheet.Name
Sheets.Add.Name = "Auswertung"
Sheets(Blattname).Activate
firstAddress = gefundener_Begriff.Address
Do
Zeile = Zeile + 1
Sheets("Auswertung").Cells(Zeile, 1) _
= Range(gefundener_Begriff.Address)
index1 = index1 + 1
ReDim Preserve gefunden(1 To index1)
gefunden(index1) = gefundener_Begriff.Address
Set gefundener_Begriff = Range("A1:IV65536").FindNext(gefundener_Begriff)
Loop While Not gefundener_Begriff Is Nothing And gefundener_Begriff.Address <> firstAddress
Do
index2 = index2 + 1
If index2 = index1 Then
text = ""
schalter = 0
End If
Range(gefunden(index2)).Select
ActiveWindow.ScrollRow = Selection.Row
ActiveWindow.ScrollColumn = Selection.Column
If MsgBox(CStr(index2) & ". von " & CStr(index1) & " gefundenen Übereinstimmungen des Suchbegriffes." & vbNewLine & text, schalter, "Anzeige") = 7 Then Exit Do
If index2 = index1 Then Exit Do
Loop
End If
End Sub


Bei dem Makro wird das gesamte Blatt nach dem Begriff, den man in einer Inputbox eingeben muss, durchsucht. Es wird automatisch ein neues Blatt mit dem Namen "Auswertung" angelegt. Übereinstimmungen werden in dem Blatt angesprungen und zusätzlich noch in dem Blatt "Auswertung"aufgelistet. Wenn Du nur einen Teilbereich durchsucht haben möchtest, dann musst Du in den Zeilen

Set gefundener_Begriff = Range("A1:IV65536").Find(what:=Suchbegriff, lookat:=xlPart, LookIn:=xlValues, MatchCase:=False)

und

Set gefundener_Begriff = Range("A1:IV65536").FindNext(gefundener_Begriff)

die Bereichsangaben ändern. Die Mindesteingabe in der Inputbox sind 3 Buchstaben. Weniger werden nicht zugelassen.

Probiers mal aus.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: