Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
148to152
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
148to152
148to152
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

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

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige