Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1336to1340
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

Suche in anderer Tabelle Schleife

Suche in anderer Tabelle Schleife
18.11.2013 11:19:41
Der
Hallo,
ich schlage mich gerade mit meinem gefährlichen Halbwissen in VBA rum, und hoffe mir kann hier jemand helfen. Möchte aber noch erwähnen, dass ich mich schon durch diverse „Fundstellen“ für ähnliche Probleme gearbeitet habe. Bislang ohne Erfolg. Ob mit oder ohne Set ….. find….. oder andere “Lösungen” bringt, scheinbar, alles nichts. Offensichtlich hat mein Hirn ein “Programfehler” wenn es um das Verständnis der Suchmethode geht.
Mein Problem:
Ich habe zwei Tabellen (Übersicht und VE). In der Übersicht stehen in Spalte A ab Zeile 15 mehrere Namen untereinander in Spalte A. Diese Namen sollen nun in Tabelle VE Spalte A ab Zeile 12, auch untereinander in Spalte A, jeweils einzeln gesucht werden. Wenn gefunden soll in Tabelle A zwei Zellen neben dem Namen ein Link hinterlegt werden.
Kurz:
Nimm den ersten Namen aus Übersicht suche ihn in Tabelle VE, wenn vorhanden setze Link. Nimm den nächsten Namen aus Übersicht und suche wieder ……
Was bislang bei folgenden Code passiert: Er läuft scheinbar einmal durch, beim ersten Ergebnis wird ein Link gesetzt, dann folgt die Fehlmeldung „Laufzeitfehler 91 Objektvariable oder With-Blockvariable nicht festgelegt.“ Markiert wird die Zeile Selection. Find…..
Der Sinn und Zweck mag sich jetzt nicht erschließen. Ich würde auch gerne die Datei einstellen, aber IT-Sicherheit würde sofort Alarm schlagen und mein Rechner neu aufgesetzt….
Kann mir bitte jemand helfen?
Dim InhVergl As Variant
Dim w As long
w = 15
Do While Cells(w, 1) ""
Sheets("Übersicht").Activate
InhVergl = Cells(w, 1)
Sheets("VE").Activate
Range(Cells(12, 1), Cells(201, 1)).Select
Selection.Find(What:=InhVergl, After:=ActiveCell, LookIn:=xlFormulas,_
LookAt:=xlPart, Searchorder:=xlByColumns, Searchdirection:=xlNext,_
MatchCase:=False, SearchFormat:=False).Activate
If ActiveCell = InhVergl Then
Sheets("Übersicht").Activate
Cells(w, 1).Offset(0, 2).Activate
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="VE!A1",_
TextToDisplay:="VE"
End If
w = w + 1
Loop
End Sub

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suche in anderer Tabelle Schleife
18.11.2013 11:57:15
Klaus
Hi,
verzichte auf SELECT und ACTIVATE, die sind nie nötig. Das "Do While ..." ist nicht elegant, besser ist eine herkömmliche FOR-NEXT Schleife.
Die Fehlermeldung deutet auf eine fehlerhafte Referenzierung hin, ein typischer Fehler der bei Verwendung von SELECT auftritt ... Ich hab den Code mal nach bestem Wissen und Gewissen entschlackt, ohne Musterdatei ist das aber immer etwas schwierig. Red mal mit deinem IT-ler, dass du eine Musterdatei hochladen darfst.
Grüße,
Klaus M.vdT.
Sub test()
Dim r As Range
Dim w As Long
With Sheets("Übersicht")
w = .Cells(15, 1).End(xlDown).Row
For Each r In .Range(.Cells(15, 1), .Cells(w, 1))
If r.Value = Sheets("VE").Range(Cells(12, 1), Cells(201, 1)).Find(What:=r.Value).Value  _
Then
r.Offset(0, 2).Hyperlinks.Add Anchor:=r.Offset(0, 2), Address:="", SubAddress:="VE! _
A1", TextToDisplay:="VE"
End If
Next r
End With
End Sub

Anzeige
AW: Suche in anderer Tabelle Schleife
18.11.2013 12:21:51
Der
Hallo Klaus,
vielen Dank für Deine Hilfe. Leider kann ich definitiv keine Datei hochladen. Bin darüber auch nicht begeistert.
Ich bin immer wieder erstaunt, wie stark ein Code von Experten gekürzt werden können.
Ich erhalte bei Deinem Code die Fehlermeldung 1004: Anwendungs- und objektdefinierter Fehler in der Zeile If r.value....
Gruß
Michael

das riecht nach ...
18.11.2013 12:33:02
Klaus
... #DIV/0 oder #NV oder sowas in deiner Datei.
Sorry, ohne Musterdatei fällt die Hilfe sehr schwer!
Grüße,
Klaus M.vdT.

AW: das riecht nach ...
18.11.2013 12:38:37
Der
Nun, dann kann ich nur noch den Code Ausdrucken und die Datei zuhause nochmal erstellen.
Ohne Fleiß kein Preis. Ich melde mich heute Abend noch mal.

Anzeige
AW: das riecht nach ...
18.11.2013 19:43:30
Der
https://www.herber.de/bbs/user/88143.xls
So, hier ist die Datei. Es sind noch einige Baustellen offen. Diese sollen aber hier nicht betrachtet werden. Möchte mich am Selbstversuch weiter in das Thema vertiefen.
Den Code von Klaus habe ich auch generell verstanden und habe ihn in einer neuen Blanko-Datei getestet. Es erscheint jedoch Fehlermeldung 91....

AW: das riecht nach ...
19.11.2013 06:57:43
Der
Sorry, noch offen. Häckchen vergessen

Code compiliert nicht,
19.11.2013 17:28:19
EtoPHG
...neuer,
Da fehlt ein End If in deinem Code!
Gruess Hansueli

Find-Fehler
19.11.2013 19:51:58
Erich
Hi Vorname, ( zu Vornamen und Nicknames schau bitte mal in die Forums-FAQ )
Zitat:

NickNames sind nicht erwünscht.
Diese Frager werden bei der Beantwortung nicht gerade bevorzugt behandelt.
Nenne Deinen Vornamen, damit man Dich ansprechen kann.

Vergleich mal die beiden Codes:

Sub VE_Link()
Dim rngS As Range, rngF As Range
Dim lngW As Long
With Sheets("Übersicht")
lngW = .Cells(15, 1).End(xlDown).Row
For Each rngS In .Range(.Cells(15, 1), .Cells(lngW, 1))
Set rngF = Sheets("VE").Range("A12:A201").Find(What:=r.Value)
If Not rngF Is Nothing Then
rngS.Offset(0, 2).Hyperlinks.Add Anchor:=r.Offset(0, 2), _
Address:="", SubAddress:="VE!A1", TextToDisplay:="VE"
End If
Next rngS
End With
End Sub
Sub VE_Link_ALT()
Dim r As Range
Dim w As Long
With Sheets("Übersicht")
w = .Cells(15, 1).End(xlDown).Row
For Each r In .Range(.Cells(15, 1), .Cells(w, 1))
If r.Value = _
Sheets("VE").Range(Sheets("VE").Cells(12, 1), Sheets("VE").Cells(201, 1)).Find _
(What:=r.Value).Value Then
r.Offset(0, 2).Hyperlinks.Add Anchor:=r.Offset(0, 2), _
Address:="", SubAddress:="VE!A1", TextToDisplay:="VE"
End If
Next r
End With
End Sub
Wenn r.Value in VE!A:A nicht gefunden wird - was soll dann .Value des Suchergebnisses sein?
Das knallt.
Zu Find wesentlich: Die Methode hat mehrere Parameter, die IMMER vorgegeben werden sollten.
Das war hier schon oft Thema - schau mal hier in der Recherche nach
find alle parameter
Noch eins:
Es ist nicht besonders geschickt (eher besonders unfreundlich), hier eine Mappe hochzuladen
mit vielen leeren Modulen und irrelevanten Tabellenblättern.
Sollen alle potentiellen Helfer erst in der Mappe rumwühlen, ob da irgendwo noch relevanter Code steht?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
OT@Erich: Hatte euch nochmal geantwortet! owT
20.11.2013 01:14:28
Luc:-?
:-?

AW: Find-Fehler
20.11.2013 11:39:12
Mike
Hallo Erich,
danke für Deine Antwort und auf den Hinweis zur FAQ. Den Link hatte noch nicht gesehen. Das Forum ist für mich vom Aufbau her noch etwas ungewohnt.
Sorry das ich die ganze Mappe hochgeladen hatte. Es wurde ein Muster angefordert. Und da ich als Anfänger nicht wusste ob sich da was gegenseitig im Wege steht habe ich so verfahren.
Meinst Du mit den Parametern After, LookIn etc.? Diese hatte ich in meinem Code drin. Schon aus Respekt vor Eurem Können und Eure Mühe zu Helfen nehme ich die Lösungsvorschläge von Euch erstmals so an, wie sie sind. Für mich ist vorerst nicht ersichtlich ob Klaus einen gangbaren Lösungsvorschlag gemacht hat oder nicht. Die Unterschiede zwischen den beiden Codes sind mir aufgefallen.
Was Deinen Vorschlag (vermutlich der erste Code) angeht, so erhalte ich Laufzeitfehler 424/Objekt erforderlich. Da ich auf das r.value tippe habe ich hier versucht entsprechend was zu ändern. Leider ohne Erfolg.
Gruß
Mike

Anzeige
Sorry!
20.11.2013 12:10:58
Erich
Hi Mike,
ja, die Find-Parameter hattest du in deinem Code schon drin - das hatte ich übersehen!
(solltest du wieder einbauen...)
Und statt "r.Value" sollte da "rngS.Value" stehen - das hatte ich vergessen zu ändern,
auch bei "r.Offset".
Geht es dann?
Sorry wg. der zusätzlichen Arbeit!
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

AW: Sorry!
20.11.2013 12:51:12
Mike
Hallo Erich,
da brauchst Du dich nicht zu entschuldigen. Der Code ist so auch schlecht zu lesen. Im Gegenteil muß ich mich nochmals entschuldigen. Wieder ein Neuer im Forum, der wieder der gleichen "Mist" macht wie jeder Neuer. Das nervt die Alteingesessenen natürlich ;)
Hatte r.value und r.Offset vor meiner letzten Nachricht schon auf rngS.Value geändert. Was bekanntlich nicht funktionierte. Machte für mich irgendwie Sinn (was wiederum hoffen läßt ;) ). Wenn ich mal richtig hingesehen hätte, hätte ich gesehen das da ein zweites r.Offset steht.
Es läuft bestens. Vielen Dank dafür.
Gruß
Mike

Anzeige
Danke für deine Rückmeldung, prima! (owT)
20.11.2013 13:08:44
Erich

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige