Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Find-Methode liefert Nothing zurück obwohl Suchtext mehrmals gefunden wird

Begonnen von Pergus, November 26, 2015, 14:47:05

⏪ vorheriges - nächstes ⏩

Pergus

Hallo Excel-Freunde,

ich habe folgendes Problem:
Der 'Suchtext' wird in der Suchtabelle 'Adressen' mehrmals gefunden,
'Suchtext' wird auch korrekt übergeben an die Find-Funktion in der Initialisierung der UserForm 'Liste',
allerdings liefert mir dort Set c = .Find(Suchtext, LookIn:=xlValues) immer c = Nothing zurück, obwohl der Suchtext mehrmals gefunden wird. Find arbeitet aber korrekt.
Interessant dabei, gestern lief das Makro reibungslos, heute streikts?!?
Einzige Änderung meinerseits: Habe das Makro soweit abgeändert, dass die Listbox 4 Spalten anzeigt anstatt 1.

Hier das Makro, das von der Tabelle Projekte aus gestartet wird:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Integer
Stop
If Target.Column <> 5 Then Exit Sub
If Target.Cells <> "" Then
i = MsgBox("Möchten Sie einen anderen Kunden anstatt " & Target.Cells.Value & " als Gewinner des BVH eintragen?", vbExclamation + vbYesNo, "Änderung!")
If i = 7 Then Exit Sub
End If
If Target.Cells.Offset(0, -4) = "" Then
Target.Cells.Offset(0, -4).Select
i = MsgBox("Geben Sie zuerst ein Projekt ein!", vbExclamation + vbOKOnly, "Projekt fehlt!")
Exit Sub
End If
Suchtext = ""
Suchtext = InputBox("Bitte geben Sie hier den zu suchenden Kundennamen ein")
If Suchtext = "" Then Exit Sub
zelle = ActiveCell.Address
Liste.Show
End Sub


Im Modul1 habe ich Suchtext als Public deklariert: Public Suchtext As String

...und hier das Makro, das gestern noch bei mir, bzw. auch heute noch bei meinem Kollegen reibungslos läuft, bei mir eben nicht:

Private Sub UserForm_Initialize()
Dim blattProj As String
Dim z As Integer
Dim c As Range
Dim firstaddress As String
Dim funde(100)

blattProj = ActiveSheet.Name
Stop
z = 0

With Worksheets("ADRESSEN").Range("O:O")
Me.ListBox1.Clear
    On Error Resume Next
    Set c = .Find(Suchtext, LookIn:=xlValues)
    Stop
    If Not c Is Nothing Then
        firstaddress = c.Address
        Do
        z = z + 1
        funde(z) = c.Value
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstaddress
    End If
End With

For y = 1 To z
ListBox1.AddItem funde(y)
Next y

End Sub


Und hier der abgeänderte Code den ich insofern abgeändert habe, dass mir die Listbox 4 Spalten anzeigt anstatt eben nur eine, und zwar so:

Private Sub UserForm_Initialize()
Dim blattProj As String
Dim z As Integer
Dim c As Range
Dim firstaddress As String
Dim funde(100)

blattProj = ActiveSheet.Name
Stop
z = 0

Me.ListBox1.Clear
With Worksheets("ADRESSEN").Range("O:O")
    On Error Resume Next
    Set c = .Find(Suchtext, LookIn:=xlValues)
    If Not c Is Nothing Then
        firstaddress = c.Address
    Do
        With Me.ListBox1
        .ColumnCount = 4
          .AddItem
          .List(.ListCount - 1, 0) = c.Value
          .List(.ListCount - 1, 1) = c.Offset(0, -9).Value
          .List(.ListCount - 1, 2) = c.Offset(0, -1).Value
          .List(.ListCount - 1, 3) = c.Offset(0, 1).Value
          .ColumnWidths = "8cm;6cm;2cm;8cm"
        End With
    Set c = .FindNext(c)
    Loop While Not c Is Nothing And c.Address <> firstaddress
    End If
End With

For y = 1 To z
ListBox1.AddItem funde(y)
Next y

End Sub


Diesen Code konnte ich allerdings nicht testen!

Hat jemand eine Idee, woran es liegen kann, dass die Find-Methode immer Nothing liefert, obwohl der Suchtext mehrmals gefunden wird? Habe schon viel gegoogelt, aber keine brauchbare Tipps oder Lösungen gefunden.

Bin dankbar für jede Hilfe.

Mfg Gustav
Win7, Office Professional 2010

Pergus

??? ich habe keine Ahnung wie und was passiert ist ???

JETZT FUNKTIONIERT'S WIEDER EINWANDFREI !!!

Microsoft bleibt ein Mysterium ;-)
Win7, Office Professional 2010

Pergus

...als Nachtrag: Habe jetz gefunden, woran es lag:

Set c = .Find(Suchtext, LookIn:=xlValues)

...sollte korrekt heißen:

Set c = .Find(Suchtext, LookIn:=xlValues, lookat:=xlPart)

Somit lag es einzig und allein daran, dass ich das 'lookat:=xlPart' aus Testzwecken entfernt hatte und nicht wieder geschrieben habe.

Ich nehme den Satz über Microsoft zurück und behaupte jetzt:

Das Problem sitzt meist vor dem Rechner!!! Zumindest in meinem Fall!!!  ;D ;D ;D

Lg an Alle
Win7, Office Professional 2010

MaggieMay

Hallo Gustav,

manchmal hilft es auch einfach mal über sein Problem gesprochen zu haben. :-)
Freundliche Grüße
MaggieMay

Pergus

Win7, Office Professional 2010