Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Suchen und anzeigen lassen

Forumthread: Suchen und anzeigen lassen

Suchen und anzeigen lassen
15.08.2002 12:46:20
Günter
Dies ist eine Berichtigung. Hatte einen Erklärungsfehler drinnen.

Guten Tag!
Ich versuche geraume Zeit folgendes über VBA zu realisieren
(klappt aber nicht):
Zustand: Ich habe eine Exceldatei mit meheren Arbeitsblätter.
In den der 2-spaltigen Tabelle stehen Orte und Strassen in Spalte A). Hierbei gibt es Orte (immer beginnend
mit z.B. o= 015 Dreieich. Hierunter werden Strassen aufgeführt.
Nun gibt es aber auch Orte ohne Strassen. Wenn jemand nach einer Strasse sucht, soll er den Ort (z.b. Dreieich -wie im Beispiel-
und die Strasse eingezeigt bekommen. Es soll gegeben sein, dass
die Strasse immer zum richtigen Ort angezeigt wird.
Wie kann man das in einer User-Box mit Abfrage oder sonst wie realisieren ?
Hier kurz ein Auszug der Exceldatei.
o= 050 Hofgeismar
o= 052 Immenhausen
o= 054 Kassel
Achenbachstr.
Adam-Selbert-Str.
Adlerweg
Adolfstr.
o= 055 Hannover
Agensstr.
usw.


Gruss
Günter

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Suchen und anzeigen lassen
15.08.2002 13:10:03
Micha
hi,

ah jetzt ja. string2 im folgenden makro müsste den richtigen ort zurückgeben.

mfg

string1="eingegebene/zu suchende strasse"
worksheet1=workbooks("deine datei.xls").worksheet("blattname")
int1=worksheet1.Cells(worksheet1.Rows.Count, 1).End(xlUp).Row
for int2=1 to int1
if (worksheet1.cells(int2,1).text=string1) then exit for
next int2
if (int2>int1) then string2="strasse nicht gefunden"
else
do
int2=int2-1;
loop while (left(worksheet1.cells(int2,1).text,2)<>"o=")
string2=rigth(worksheet1.cells(int2,1).text,len_
(worksheet1.cells(int2,1).text)-3)
end if

Anzeige
Re: Suchen und anzeigen lassen
15.08.2002 13:22:46
Günter
Danke.
Wo/Wie baue ich diese Lösung in VBA ein?


Gruss
Günter

Re: Suchen und anzeigen lassen
15.08.2002 14:14:28
Micha
ok, hier noch mal überarbeitet:

Sub strassen()
Dim string1 As String, string2 As String
Dim int1%, int2%

string1 = InputBox("Bitte Strasse eingeben:")
Set worksheet1 = Workbooks("mappe2").Worksheets("Tabelle1")
int1 = worksheet1.Cells(worksheet1.Rows.Count, 1).End_
(xlUp).Row
For int2 = 1 To int1
If (worksheet1.Cells(int2, 1).Text = string1) Then Exit For
Next int2
If (int2 > int1) Then
MsgBox "Strasse nicht gefunden!"
Else
Do
int2 = int2 - 1
Loop While (Left(worksheet1.Cells(int2, 1).Text, 2)_
<> "o=")
string2 = Right(worksheet1.Cells(int2, 1).Text, Len_
(worksheet1.Cells(int2, 1).Text) - 3)
MsgBox "Die Strasse " & string1 & " liegt in " & string2
End If
End Sub


das ist ein komplettes makro, es kann in die datei mit der liste eingefügt werden, oder in eine eigene leere excel-datei: vba-editor starten, links im projektexplorer die datei suchen, rechtsklick auf datei ->einfügen->modul, in dem erscheinenden leeren fenster den code einfügen (dort gibts dann auch vba-hilfe mit f1 für den befehl an cursorposition), fertig.
wenn die datei mit dem makro geöffnet ist, kann es über extras->makro->makros... gestartet werden.

mfg

Anzeige
Re: Suchen und anzeigen lassen
15.08.2002 14:54:47
Günter
Nochmals merci!

Leider bekomme ich beim Ausführen des Makros bei der Zeile
"int1 = worksheet1.Cells(worksheet1.Rows.Count, 1).End_(xlUp).Row" die Meldung: "Laufzeitfehler '438'. Objekt unterstützt diese Eigenschaft oder Methode nicht".

Musste auch in der "string2..Zeile" den Unterstrich ..Len_..
herausnehmen, damit VB die Zeile übernimmt.

Vielleicht eine Idee ??


Danke
Gruss Günter

Anzeige
Re: Suchen und anzeigen lassen
15.08.2002 15:18:35
Günter
Hallo!

Hier meine derzeitige Version:

Sub strassen()
Dim string1 As String, string2 As String
Dim int1%, int2%

string1 = InputBox("Bitte Strasse eingeben:")
Set worksheet1 = Workbooks("Touren.xls").Worksheets("Tabelle2")
int1 = worksheet1.Cells(worksheet1.Rows.Count, 1).End_(xlUp).Row
For int2 = 1 To int1
If (worksheet1.Cells(int2, 1).Text = string1) Then Exit For
Next int2
If (int2 > int1) Then
MsgBox "Strasse nicht gefunden!"
Else
Do
int2 = int2 - 1
Loop While (Left(worksheet1.Cells(int2, 1).Text, 2) <> "o=")
string2 = Right(worksheet1.Cells(int2, 1).Text, Len(worksheet1.Cells(int2, 1).Text) - 3)
MsgBox "Die Strasse " & string1 & " liegt in " & string2
End If
End Sub

Jetzt bekomme ich -nach der Aufforderung zur Eingabe- die
Meldung: "Index ausserhalb des gültigen Bereichs."

Die ca. 10 Arbeitsblätter innerhalb der Arbeitsmappe (Touren.xls) heissen alle wie "Tour 64", "Tour55",
usw.


Gruss
Günter

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige