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

Fehler bei der Range.Find Methode

Fehler bei der Range.Find Methode
06.10.2013 21:56:09
Anna
Hallo,
ich bräuchte mal eure Hilfe bei der Fehlersuche, wo ich einfach nicht weiterkomme.
Und zwar hab ich mir einen Code gebastelt mit dem ich einen gewissen Begriff z.B. "address" in einer anderen Excel-Datei suche und dann dessen Position bestimme in dem Sheet, also z.b. Zeile=2 und Spalte=5. So und das knifflige ist, das ganze funktioniert auch, aber nicht immer. Ich habe einen ganzen Haufen an Excel-Dateien die automatisiert geöffnet werden sollen und bei denen dann unter anderem eben auch die Position eines bestimmten Begriffes gesucht werden muss. Das funktioniert einwandfrei bei den meisten, aber eben nicht allen. Ich habe mir die Dateien auch angeschaut, bei denen es nicht funktioniert, aber ich kann einfach keinen Unterschied finden zu denen bei denen es funktioniert. Dateityp ist immer standard, das wort ist gleich geschrieben, etc. Hat jemand eine Idee woran das liegen könnte?
Hier mein Code:
Dim rngBer As Range
Dim rngFund As Range
Dim strAdr As String
Set rngBer = Workbooks(ExcelName).Worksheets(1).Range("A1:P50")
Set rngFund = rngBer.Find(Workbooks(WorkbookName).Sheets(1).TextBoxT.Text, lookat:=xlPart, MatchCase:=False)
strRow = rngFund.Row
strColumn = rngFund.Column
Fehlermeldung tritt bei strRow auf, aufgrund dessen dass rngFund "Nothing" ist.
Über Hilfe wäre ich sehr dankbar, da ich selbst keine so rechte Idee mehr habe!
Danke schonmal,
liebe Grüße Anna

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler bei der Range.Find Methode
06.10.2013 22:10:30
Peter
Hallo Anna,
das wird sicherlich daran liegen, dass das, was Du suchst nicht gefunden wurde.
Nach dem Set Befehl solltest Du mit
If Not rngFund Is Nothing
abfragen, ob etwas gefunden wurde und nur dann den StrRow = rngFund.Row durchlaufen.
Deinem Find solltest Du auch noch den Parameter LookIn:=xlValues mitgeben.
Gruß Peter

AW: Fehler bei der Range.Find Methode
06.10.2013 22:21:01
Anna
Hallo Peter,
ja das stimmt, er findet den Begriff nicht, aber der Begriff ist da. Ich hab das überprüft. Also ich suche nach z.B. "address" und der Begriff steht auch genau so im Dokument, aber er findet ihn nicht. Und das merkwürdige ist, ich habe andere Deien die genau gleich aufgebaut sind und wo er den Begriff findet. Und ich kann mir nicht erklären, warum es das eine mal funktioniert und das andere mal nicht. Dazu wäre ich viell. noch zu erwähnen, dass ich die Dateien von extern bekomme. Also kann es viell. an irgendwelchen Einstellungen des Dokumentes oder so liegen?
Was brauche ich als LookIn wenn ich Strings suche?
Danke!

Anzeige
AW: Fehler bei der Range.Find Methode
06.10.2013 22:19:11
{Boris}
Hi Anna,
  • Fehlermeldung tritt bei strRow auf, aufgrund dessen dass rngFund "Nothing" ist.

  • Eigentlich hast Du es Dir doch schon selbst beantworet - und Peter hat zudem alles dazu gesagt.
    Nothing.Row
    gibt es nunmal nicht.
    Ist xlPart wirklich so gewollt?
    VG, Boris

    AW: Fehler bei der Range.Find Methode
    06.10.2013 22:23:44
    Anna
    Ja den Grund für den Fehler kenne ich, dass er den Begriff nicht findet. Aber der Begriff ist da und das ist was ich nicht verstehe. Und die Dokumente sind alle ähnlich aufgebaut von der Schematik. Und bei manchen findet er den Begriff aus fü mich nicht verständlichen Gründen einfach nicht.

    Anzeige
    AW: Fehler bei der Range.Find Methode
    06.10.2013 22:42:01
    Anna
    Also, ich weiß nicht ob ich irgendwas übersehe, aber ich habe einfach mal alles aus den Dokumenten rausgelöscht bis auf einen Begriff dessen Position ich im Dokument finden möchte. Und das ganze dann nochmal laufen lassen und es passiert das gleiche.
    Also z.B. bei folgendem Dokument findet er die Position:
    https://www.herber.de/bbs/user/87558.xls
    Bei diesem hier aber nicht:
    https://www.herber.de/bbs/user/87559.xls
    Und bei diesem, dass ich bei mir selbst in Excel erstellt habe findet er ihn auch:
    https://www.herber.de/bbs/user/87560.xls
    Aber sehen doch alle gleich aus?! Hat jemand eine Idee, oder hab ich irgendetwas offensichtliches übersehen?

    Anzeige
    AW: Fehler bei der Range.Find Methode
    06.10.2013 22:49:21
    {Boris}
    Hi Anna,
    leider hast Du keinen Code in der Datei...?!
    Im Eingangspost hast Du u.a. geschrieben:
    Workbooks(ExcelName)
    Wo und wie wird denn die Variable ExcelName gefüttert?
    VG, Boris

    Schließe mich Boris an, ...
    06.10.2013 23:10:27
    Luc:-?
    …Anna;
    muss an Workbooks(WorkbookName).Sheets(1) bzw Workbooks(ExcelName).Worksheets(1) liegen, denn mit einem nur auf das aktuelle Blatt bezogenen kleinen TestPgm wird der Begriff in allen Dateien gefunden.
    Gruß Luc :-?

    TestPgm - klappt bei mir nicht
    10.10.2013 22:54:41
    Anna
    Luc hast du zufällig noch den Code den du für die TestPgm verwendet hast? Das wäre super!!!
    Denn ich hab den folgenden code (siehe unten) mal mit 1.xls und einmal mit 2.xls probiert, beide dateien bereits geöffnet und bei mir funktioniert es bei 1 und ich bekomme 3 angezeigt in der msgBox und bei 2 kommt immernoch ein Fehler. Also das gleiche wie vorher. Und die Übertragung ExcelName und WorkbookName ist jetzt draußen, kann dafür also nicht verantwortlich sein.
    Set rngBer = Workbooks("2.xls").Worksheets(1).Range("A1:P50")
    Set rngFund = rngBer.Find("serial number", lookat:=xlPart, MatchCase:=False)
    strRow = rngFund.Row
    strColumn = rngFund.Column
    MsgBox strRow
    Viele Grüße Anna

    Anzeige
    Sicher nicht, aber sowas in der Art war's, ...
    11.10.2013 01:50:14
    Luc:-?
    …Anna:
    Option Explicit
    Sub TestFind()
    Const suBeg$ = "serial number", adSuBer$ = "A1:P50"
    Dim suCol As Long, suRow As Long, suBer As Range, suFund As Range
    Set suBer = Range(adSuBer)
    Set suFund = suBer.Find(suBeg, LookAt:=xlPart, MatchCase:=False)
    If Not suFund Is Nothing Then
    suRow = suFund.Row: suCol = suFund.Column
    MsgBox "Zl/Sp: "& suRow & "/" & suCol, vbInformation, _
    "Fundstelle " & suFund.AddressLocal(0, 0)
    Else: MsgBox "Keine!", vbInformation, "Fundstelle"
    End If
    Set suBer = Nothing: Set suFund = Nothing
    End Sub
    
    Das findet in deiner widerspenstigen TestDatei den Suchbegriff auf Anhieb, auch mit nachgestelltem x. Kann also wirklich nur an den sonst noch bei dir vorhandenen PgmTeilen liegen.
    Gruß Luc :-?

    Anzeige
    AW: Sicher nicht, aber sowas in der Art war's, ...
    13.10.2013 13:06:55
    Anna
    Hallo,
    ich hab nun doch endlich den Fehler gefunden :-) Danke an euch beiden!!! Da es ja wohl nicht an der Suche an sich sondern an der Zuweisung liegen musste, habe ich mir nochmal intensiver die Dokumente angeschaut und wie sich herausstellte, haben einige der Dokumente für die ich das Makro verwenden wollte ein verstecktes Tabellenblatt, das so aber gar nicht zu sehen war. Ich hab es jetzt erst entdeckt als ich die verschiedenen Dokumente im VBA geöffnet habe. Auf jedenfall hat VBA bei der Zuweisung auf das erste Worksheet immer auf dieses Blatt zugegriffen, wo natürlich nichts entsprechendes stand.
    Danke nochmal!!
    Viele Grüße
    Anna
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige