Riesenproblem !! Äußerst diffizil...

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Label
Bild

Betrifft: Riesenproblem !! Äußerst diffizil...
von: Franz W.
Geschrieben am: 23.11.2003 23:56:43

Guten Abend Fachleute,

bin grad über ne saudumme Sache gestolpert und hab keine Ahnung, was ich da tun kann (würde ja hoffen, für Euch nur ne Kleinigkeit!?!)

Ich habe in einer UF eine Kombobox - in der Liste sind Strassennamen mit Hausnummern - mit folgendem Makro dran:



Private Sub cmbStrasse_Change()
    Set KdRng = Worksheets("help").Range("Adressen")
    sSearch = cmbStrasse.Value
    With Worksheets("help")
        If .Range("B65536") = "" Then LoLetzte = .Range("B65536").End(xlUp).Row Else LoLetzte = 65536
        Set Found = .Range("B33:B" & LoLetzte).Find(sSearch, LookIn:=xlValues)
    End With
    With Application.WorksheetFunction
        If cmbStrasse <> "" And Not Found Is Nothing Then
            txtPLZ = Format(.VLookup(cmbStrasse, KdRng, 2, False), "00000")
            txtOrt = .VLookup(cmbStrasse, KdRng, 3, False)
        Else
            txtPLZ = ""
            txtOrt = ""
        End If
    End With
dlgKdAendern.LabelStr.Caption = cmbStrasse
End Sub




Nun habe ich z.B. den Eintrag: "Kurzbauerstr. 14" in der Liste (und im Beispiel ist das der einzige Eintrag, der mit einem "K" beginnt). Möchte ich nun einen Eintrag "Kurzbauerstr. 1" ins Feld reinschreiben und fange zu schreiben, so füllt er nach dem Schreiben des Buchstaben "K" bereits das ganze Feld aus mit "Kurzbauerstr. 14".

Gehe ich nun ans Ende und betätige die Rücktaste, DANN LÖSCHT ER NICHT DIE ZIFFER 4 !! Sondern er markiert sie lediglich!! Drücke ich jetzt "DELETE", um die "4" zu entfernen, macht er den Fehler: " Die VLookup-Eigenschaft ... konnte nicht zugeordnet werden. " Und das bei der Zeile: txtPLZ = Format(.VLookup(cmbStrasse, KdRng, 2, False), "00000"), weil er ja oben für "Found" schon den Wert "Kurzbauerstr. 14" gefunden hat.

Drücke ich bei markierter "4" eine andere Zahl und mache z.B. aus der "14" eine "17", akzeptiert er das.

Drücke ich bei markierter "4" die Leertaste, klappts auch.

Ich weiß aber nicht wie ich nur die "1" schreiben kann.

Kann ich den Fehler irgendwie abfangen?? Ich weiß nicht wo ich ansetzen soll.

Für Eure Hilfe schon mal ein dickes Dankeschön im Voraus und Grüße
Franz


P.S.: Streich ich das Makro raus, dann kann ich die 4 ganz normal mit der Rücktaste löschen........
Bild


Betrifft: AW: Riesenproblem !! Äußerst diffizil...
von: K.Rola
Geschrieben am: 24.11.2003 00:13:45

Hallo,

mit welcher Methode wird die Combobox gefüllt?

Gruß K.Rola


Bild


Betrifft: AW: Riesenproblem !! Äußerst diffizil...
von: Franz W.
Geschrieben am: 24.11.2003 00:19:57

Hallo K.Rola,

vielen Dank, dass Du Dich meiner annimmst. Es handelt sich um die Kombo, die ich nach Deinem Vorschlag von gestern erstellt habe. Sie ist dreispaltig und wird gefüllt, indem im Eigenschaftsfenster unter RowSource der Name eines benannten Bereiches "Adressen" eingetragen ist.

Grüße
Franz


Bild


Betrifft: AW: Riesenproblem !! Äußerst diffizil...
von: K.Rola
Geschrieben am: 24.11.2003 00:24:50

Hallo,

ergänz deinen Code um eine Abfrage nach dem Listindex. Der ist
auf jeden Fall > -1, wenn ein Eintrag vorhanden ist. Wenn du etwas
neues eingibst, das noch nicht in der Liste vorhanden ist, ist er -1

Gruß K.Rola


Bild


Betrifft: Bitte um Nachhilfe
von: Franz W.
Geschrieben am: 24.11.2003 00:28:55

Hallo K.Rola,

ich fange mit Komboboxen erst an, und hab - ganz ehrlich gestanden - das mit dem Listindex noch nicht kapiert (auch nach Lesen der Hilfe nicht *schäm*). Was kann ich damit erreichen und wo muss ich da im Code was einbauen? Das krieg ich noch nicht hin. Magst Du mir da bitte noch mal helfen?

Grüße
Franz


Bild


Betrifft: AW: Bitte um Nachhilfe
von: K.Rola
Geschrieben am: 24.11.2003 00:54:59

Hallo,

wenn du die Combobox dreispaltig mit RowSource füllst, ist doch
die ganze Abfrage mit dem VLOOKUP überflüssig, die Daten stehen
doch schon in der Box.
Was steht denn in den 3 Spalten der Combobox, Straße, PLZ und Ort?

Gruß K.Rola

PS: bei der Find- Methode kannst du beruhigt auf die Einschränkung
bis zur letzten Zelle verzichten. Find ist so schnell, dass du den
Unterschied garantiert nicht merkst, ja nichtmal messtechnisch
erfassen könntest.


Bild


Betrifft: AW: Bitte um Nachhilfe
von: Franz W.
Geschrieben am: 24.11.2003 01:00:50

Hallo K.Rola,

(für mich) tolle neue Sachen (auch Dein P.S.!!).

Ja, in den 3 Spalten stehen Straße, Plz und Ort. Und nach Ausfüllen der Box mit der Straße soll in die Felder von PLZ und Ort der jeweils dazugehörige Wert eingetragen werden. Und es wäre natürlich toll, wenn das einfacher gehen würde, als ich das gemacht habe.

Grüße
Franz


Bild


Betrifft: Neuer Code
von: Franz W.
Geschrieben am: 24.11.2003 01:32:21

Hallo K.Rola,

hab also nach Deinem Tipp mit ListIndex die ganze Find-Geschichte jetzt rausgelassen:


Private Sub cmbStrasse_Change()
    Set KdRng = Worksheets("help").Range("Adressen")
    With Application.WorksheetFunction
        If cmbStrasse <> "" And cmbStrasse.ListIndex > -1 Then
            txtPLZ = Format(.VLookup(cmbStrasse, KdRng, 2, False), "00000")
            txtOrt = .VLookup(cmbStrasse, KdRng, 3, False)
        Else
            txtPLZ = ""
            txtOrt = ""
        End If
    End With
End Sub


Aber wie kann ich die zur Strasse gehörenden Werte aus der Box cmbStrasse in die Felder txtPLZ und txtOrt bringen OHNE VLookup? Das hab ich noch nicht raus.

Wenn Du mir da noch mal helfen könntest, wäre ich Dir sehr dankbar.

Grüße
Franz


Bild


Betrifft: AW: Neuer Code
von: K.Rola
Geschrieben am: 24.11.2003 12:55:40

Hallo,

abstraktes Beispiel:


Private Sub cboStr_Change()
If cboStr.ListIndex > -1 Then
  txtPLZ = cboStr.Column(1)
  txtOrt = cboStr.Column(2)
Else
  txtPLZ = ""
  txtOrt = ""
End If
End Sub



Gruß K.Rola


Bild


Betrifft: AW: Neuer Code
von: Franz W.
Geschrieben am: 24.11.2003 13:01:28

Hallo K.Rola,

vielen Dank, dass Du noch mal antwortest. Sowas in der Art hab ich mir inzwischen auch zusammengebastelt. Und es klappt auch!! Darf ich als Anfänger den Profi fragen, warum Du das als abstrakt bezeichnest???

Grüße
Franz


Bild


Betrifft: AW: Neuer Code
von: K.Rola
Geschrieben am: 24.11.2003 13:16:33

Hallo,

weil es nicht explizit auf deine Beispiel bezogen war.

Gruß K.Rola


Bild


Betrifft: AW: Neuer Code
von: Franz W.
Geschrieben am: 24.11.2003 13:21:10

Hallo K.Rola,

deswegen!! Aber bis auf die Namne ist es genau richtig so!!

Vielen Dank für Deine Hilfe und beste Grüße
Franz


Bild


Betrifft: Teillösung oder ... ?? Aber trotzdem happy !!
von: Franz W.
Geschrieben am: 24.11.2003 00:52:39

Hallo K.Rola,

hab was erreicht (auch wenn ich noch nicht so ganz verstanden habe, warum). Hab, wie Du vorgeschlagen hast eine Abfrage nach dem ListIndex rein und zwar hier:

If cmbStrasse <> "" And Not Found Is Nothing And cmbStrasse.ListIndex > -1 Then

Jetzt kann ich zwar mit der Rücktaste immer noch nicht löschen, es wird nach wie vor mit der Rücktaste nur markiert (ist das nun einfach so??). Aber nach der Löschtaste klappt's jetzt, es kommt kein Fehler mehr und das Makro macht exakt, was es soll. Und damit bin ich ja shcon überglücklich.

Auf jeden Fall ganz vielen Dank für Deine Hilfe und Grüße
Franz

P.S.: Mal schauen, ob ic noch dahinterkomme, was das mit den ListIndex jetzt geändert hat, dass es jetzt klappt ..... :-)))


Bild

Beiträge aus den Excel-Beispielen zum Thema " anzeige von formel ausblenden"