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
??? ich habe keine Ahnung wie und was passiert ist ???
JETZT FUNKTIONIERT'S WIEDER EINWANDFREI !!!
Microsoft bleibt ein Mysterium ;-)
...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
Hallo Gustav,
manchmal hilft es auch einfach mal über sein Problem gesprochen zu haben. :-)
...ganz genau MaggieMay, das hat gut getan!!! ;D ;D ;D