Fehler in ComboBox
#1
Hallo liebe Experten.
Der Code hier funktioniert einwandfrei.
Code:
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    StrKunde = UserForm1.ListBox1.List(ListBox1.ListIndex, 1)
    Set SP = Worksheets("Kundendistanz").Columns(2).Find(StrKunde, lookat:=xlWhole, LookIn:=xlValues)
    With Sheets("Kundendistanz")
         .Range("A3") = .Range("A" & SP.Row).Value 'KNR
         .Range("B3") = .Range("B" & SP.Row).Value 'Kunde
         .Range("C3") = .Range("C" & SP.Row).Value 'Adresse
         .Range("D3") = .Range("D" & SP.Row).Value 'PLZ
         .Range("E3") = .Range("E" & SP.Row).Value 'Ort
    End With
End Sub

Wenn ich aber anstatt der Listbox eine ComboBox nehme, bekomme ich den Fehler 1004 in der zeile SP = StrKunde......
Aber die Variable StrKunde zeigt in der Überwachung den Wert an.
Er existiert also. Was muss ich ändern?

Code:
Private Sub ComboBox1_Click()
    StrKunde = ComboBox1.Value
    Set SP = Worksheets("Kundendistanz").Columns(2).Find(StrKunde, lookat:=xlWhole, LookIn:=xlValues)
    With Sheets("Kundendistanz")
         .Range("A3") = .Range("A" & SP.Row).Value 'KNR
         .Range("B3") = .Range("B" & SP.Row).Value 'Kunde
         .Range("C3") = .Range("C" & SP.Row).Value 'Adresse
         .Range("D3") = .Range("D" & SP.Row).Value 'PLZ
         .Range("E3") = .Range("E" & SP.Row).Value 'Ort
    End With
End Sub
Top
#2
Hallo,

in deinem Code gibt es keine Zeile die mit "SP = StrKunde" anfängt.

Da du die Möglichkeit einer ergebnislosen Suche nicht abfängst, wird das Ding beim ersten Aufruf von SP.Row einen 1004 melden, wenn nix gefunden wurde.

vg, MM
Top
#3
Ich verstehe das nicht.
Im funktionierendem Code mit der Listbox gibt es diese Zeile auch nicht.
Die Variable Strkunde bekommt von der Combo den gleichen Wert wie oben in der Variante Listbox...
Top
#4
Hallo,

du hast geschrieben:
"Wenn ich aber anstatt der Listbox eine ComboBox nehme, bekomme ich den Fehler 1004 in der zeile SP = StrKunde......"

Diese Zeile gibt's 'net.

Der Fehler ist bei mir nicht reproduzierbar. Es spielt im Grunde keine Rolle, was in StrKunde drinsteht.

Da ich die sonstigen Rahmenbedungungen nicht kenne kann ich nur spekulieren, wo ein Fehler auftreten könnte. Und das ist wenn die Suche erfolglos war.


vg, MM
Top
#5
Hallo

auf jeden Fall ist es ein grundsaetzlicher Fehler im Code die Möglichkeit das die Find Suche "Ergebnislos" war nicht abzufangen!!  Bitte so machen:
If Not Sp is Nothing Then
With Sheets("Kundendistanz")
   'hier der Code
End With
End if

Mir faellt ein Unterschied zwischen ListBox und ComboBox auf, wobei ich aber nicht weiss ob der wirklich relevant ist???
Das Listenfeld besitzt offenbar mehrere Spalten, hieran erkennbar:  StrKunde = UserForm1.ListBox1.List(ListBox1.ListIndex, 1)

Werden da die gleichen Werte geladen??  Wir sehen die Datei ja nicht, wissen nicht was in die ComboBox geladen wurde??  Ob sie mehrere Spalten hat??

mfg  Gast 123
Top
#6
Hallo Gast 123,

das könnte natürlich sein, dass hier der Hund begraben liegt, denn die Mehrspaltigkeit muß nicht unbedingt auch auf die Kombo-Box zutreffen. Allerdings schreibt der OP: "Aber die Variable StrKunde zeigt in der Überwachung den Wert an." Also hab ich das erstmal ignoriert.

vg, MM
Top
#7
Hallo

was ist denn wenn man in den Code die Schutzzeile - "If Not is Nothing" einbaut.  Werden dann alle Daten gefunden, oder fehlen ab und zu welche?
Sonst sollte man die Daten von ListBox und ComboBox mal in eine Zelle schreiben und jeden Buchstaben vergleichen. Manchmal steht ja vorne oder hinten noch ein " " Space, Leerzeichen. Damit hatte ich auch schon Probleme.

mfg  Gast 123
Top
#8
Code:
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
   on error resume next

  With Sheets("Kundendistanz")
     if Listbox1.listindex>-1 then  .Parent.Range("A3:E3")=.Columns(2).Find(Listbox1.columns(1), ,,1).offset(,-1).resize(,5).Value
  End With
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#9
Es nützt nichts die zeile
Code:
If Not SP is Nothing Then
einzubauen, wenn der Fehler 1004 bereits eine Zeile
bei
Code:
Set SP = Worksheets("Kundendistanz").Columns(2).Find(StrKunde, lookat:=xlWhole, LookIn:=xlValues)
stehen bleibt.

Nochmal zum Grundverständnis. In der Variante mit der Listbox bekommt die
Variable StrKunde aus dem Worksheet Spalte B den Namen des Kunden
und führt den nachfolgenden Code korrekt aus.

In der Variante mit der ComboBox bekommt die Variable StrKunde exakt den gleichen Wert für die Suche zugewiesen.
Doch hier sagt der Code ERROR 1004.
Die ComboBox hat als ListRow lediglich die Spalte B als Quelle. Mehr braucht die ja auch nicht.
In der Variante mit der ListBox wird ja auch nur die Spalte B als Wert ausgelesen und zugewiesen.

Es bleibt also die Frage warum der Wert der Variablen StrKunde in der ListBox geht und in der Combo nicht....
Top
#10
#8 übersehen ?


Code:
Private Sub ComboBox_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
 on error resume next

 With Sheets("Kundendistanz")
    if ComboBox1.listindex>-1 then  .Range("A3:E3")=.Columns(2).Find(ComboBox1.column(1), ,,1).offset(,-1).resize(,5).Value
 End With
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste