Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Eigenartiges Comboboxverhalten

Betrifft: Eigenartiges Comboboxverhalten von: Michael Schneyder
Geschrieben am: 11.09.2014 09:03:51

Hallo aus Wien,

mein Problem mit den API-Funktionen konnte ich inzwischen lösen - war ein Problem an ganz anderer Stelle. Egal!

Meine neue Frage betrifft ein Problem, wo ich seit Stunden einfach nicht schlau werde:
Ich habe eine Combobox die nach der Überprüfung von bestimmten Einträgen in einer Liste mit verschiedenen Inhalten befüllt wird (z.B. wenn ein Eintrag in der Liste bereits vorhanden ist, darf er in der ComboBox nicht mehr aufscheinen).

Das funktioniert auch gut. Ich steuere die Box zunächst mit dem Ereignis DropButtonClick an und führe dann die Überprüfung und Neubefüllung der Box aus.

Wähle ich nun ein Element der Box aus löst das logischerweise ein Change-Ereignis aus.

Und jetzt das Eigenartige:
Der ausgewählte Eintrag wird mir in der Box nach Schließen des Auswahlfensters nicht angezeigt. Stelle ich jedoch eine MsgBox an den Beginn des Events zeigt er mir alles perfekt an. Wie kann eine MsgBox entscheidend sein, ob in einer Combobox ein Inhalt aufscheint oder nicht???

Hier der Code dazu:

Private Sub ComboBox1_Fill()
    
    LangKat ("ZAHLUNGSART")
        
    ZACount1 = 0
    ZACount2 = 0
        
    'Änderung bei vorhandener Barzahlung
    For i = 0 To Listbox1.ListCount - 1
        If Me.Listbox1.List(i, 1) = Worksheets("Language").Cells(LangKatRow + 5, LangIndex). _
Value Then
            ZACount1 = 1
        End If
    Next i
    
    'Änderung bei vorhandener Banküberweisung
    For i = 0 To Listbox1.ListCount - 1
        If Me.Listbox1.List(i, 1) = Worksheets("Language").Cells(LangKatRow + 6, LangIndex). _
Value Then
            ZACount2 = 2
        End If
    Next i
    
    NoEvent = True
    Me.ComboBox1.Clear
    NoEvent = False
    
    For i = 5 To 8
        If i = 5 And ZACount1 = 1 Then GoTo weiter
        If i = 6 And ZACount2 = 2 Then GoTo weiter
            
        Me.ComboBox1.AddItem Worksheets("Language").Cells(LangKatRow + i, LangIndex).Value
weiter:
    Next i
    
End Sub

Private Sub ComboBox1_Change()
    
    If NoEvent Then Exit Sub

    MsgBox("?"),vbsystemmodal    

    LangKat ("ZAHLUNGSART")
    
    'Freischalten Combobox2
    If ComboBox1.Value = Worksheets("Language").Cells(LangKatRow + 7, LangIndex).Value Or  _
ComboBox1.Value = Worksheets("Language").Cells(LangKatRow + 8, LangIndex).Value Then
        ComboBox2.Enabled = True
        ComboBox2.BackColor = &H80000005
        
        'Freischalten des Speicherknopfes
        If TextBox1.Text <> "" And ComboBox1.Value <> "" And ComboBox2.Value <> "" Then
            Button2.Enabled = True
        Else
            Button2.Enabled = False
        End If
    Else
        ComboBox2.Enabled = False
        ComboBox2.Value = ""
        ComboBox2.BackColor = &H80000004
    
        'Freischalten des Speicherknopfes
        If TextBox1.Text <> "" And ComboBox1.Value <> "" Then
            Button2.Enabled = True
        Else
            Button2.Enabled = False
        End If
    End If
    
End Sub

Private Sub ComboBox1_DropButtonClick()
    
    Call ComboBox1_Fill

End Sub


Ich will diese MsgBox nicht, weil sie den Ablauf unnötig kompliziert! Habt ihr eine Idee dazu?

Danke und LG
Michael

  

Betrifft: AW: Eigenartiges Comboboxverhalten von: yummi
Geschrieben am: 11.09.2014 09:23:26

Hallo Michael,

poste doch mal deien Datei, dann kann man dir eher helfen.

Gruß
yummi


  

Betrifft: AW: Eigenartiges Comboboxverhalten von: Michael Schneyder
Geschrieben am: 11.09.2014 09:29:54

Hallo Yummi,

danke für die rasche Meldung! Ich glaub, ich habs schon gefunden: In der Liste mit den gespeicherten Daten stehen Einträge, die er nachher für die ComboBox ausschließt. Wenn ich jetzt aber einen dieser Einträge einlesen möchte, motzt er, weil er den vorhandenen Eintrag nicht in der aktuellen Auswahlliste der Combobox finden kann ... warum das allerdings dann damit zusammenhängt, ob ich da eine MsgBox einfüge oder nicht, ist und bleibt mir ein Rätsel.

Ich kann dir das File gerne schicken, komm aber erst wieder abends dazu.

LG Michael


  

Betrifft: AW: Eigenartiges Comboboxverhalten von: yummi
Geschrieben am: 11.09.2014 09:35:41

Hallo Michael,

ansonsten hilft debuggen auf 2 Bildschirmen ;-)
Die Msgbox führt ja zu einer Unterbrechung des Events und Abgabe an einen anderen Prozeß, evtl führt ein DoEvents anstatt der MsgBox zum selben Ergenis.

Gruß
yummi