VBA - Wenn - Dann
#1
Guten Morgen,

ich verzweifele gerade fast an einer simplen Wenn-Dann Formal in VBA.

Folgenden Code habe ich bisher:

 If cmb2.Value = "others" Then
 cmb3.Enabled = True
 End If
 

Aber trotzdem ist meine ComboBox3 immer enabled...?!
Ich verstehe nur nicht warum...

Bitte um Erleuchtung :)

Danke vielmals
Top
#2
Moin,

welcher Eigenschaft einer ComboBox kann man den Wert "others"  zuweisen?
Es sei denn, cmb2 ist keine ComboBox.

Wenn cmb2 <> ComboBox,
dann empfehle ich,
bleib Deiner Namenskonvention treu.
Top
#3
Hallo S...,

fehlt da der Else-Zweig?

 Else
 cmb3.Enabled = False
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Top
#4
Hallo E...,

danke dafür.
Schreibe selbst ComboBox, meine und lese CheckBox.

@SteBen:
Erweiternd zum Else-Zweig, möchte Ich mich hiermit liebend gern mit folgenden Vorschlag korrigieren:
Code:
Select Case cmb2.Value
 Case Is = "others" 'Hinweis: Gross/Kleinschreibung
  cmb3.enabled = True
 Case Else
  cmb3.enabled = False
End Select
Top
#5
Hallo zusammen,

danke für die Hinweise.

@ Marko, wenn ich Deinen Code übernehme, bekomme ich einen Systaxfehler... Excel hat ein Problem mit Zeile 2 (Case Is "others").

Huh
Top
#6
Danke fürs Feedback.

Code:
Case Is = "others"

Oben hab ich es eben korrigiert.
Top
#7
Danke. Jetzt ist zwar der Syntaxfehler gelöst, aber meine cmb3 bleibt nach wie vor deaktiviert..


Angehängte Dateien Thumbnail(s)
   
Top
#8
Poste doch mal den relevanten Code so, wie er in Deiner Mappe steht.
Top
#9
Code:
Private Sub UserForm_Initialize()
 
 'Private Sub chb1_Click()
    chb2 = Not chb1


'Private Sub chb2_Click()
    chb1 = Not chb2
 
 MultiPage1.Value = 0
 
'Listeintrag hinzufügen
 cmb1.AddItem "XXXXXX" 'ListIndex = 0
 cmb1.AddItem "Selbstanlieferung" 'ListIndex = 1
 'Use drop-down list
 cmb1.Style = fmStyleDropDownList
 'Combo box values are ListIndex values
 cmb1.BoundColumn = 0
 'Set combo box to first entry
 cmb1.ListIndex = 0
 
 cmb1.Font.Bold = True
 cmb1.Font.Size = 12
 
...

 'Use drop-down list
 cmb2.Style = fmStyleDropDownList
 'Combo box values are ListIndex values
 cmb2.BoundColumn = 0
 'Set combo box to first entry
 cmb2.ListIndex = 0
 
 cmb2.Font.Bold = True
 cmb2.Font.Size = 12

'PLZ auswählen
cmb3.AddItem "01"
cmb3.AddItem "02"
cmb3.AddItem "03"
cmb3.AddItem "04"
cmb3.AddItem "05"
cmb3.AddItem "06"
cmb3.AddItem "07"
cmb3.AddItem "08"
cmb3.AddItem "09"
cmb3.AddItem "10"
cmb3.AddItem "11"
cmb3.AddItem "12"
cmb3.AddItem "13"
cmb3.AddItem "14"
cmb3.AddItem "15"
cmb3.AddItem "16"
cmb3.AddItem "17"
cmb3.AddItem "18"
cmb3.AddItem "19"
cmb3.AddItem "20"
cmb3.AddItem "21"
cmb3.AddItem "22"
cmb3.AddItem "23"
cmb3.AddItem "24"
cmb3.AddItem "25"
cmb3.AddItem "26"
cmb3.AddItem "27"
cmb3.AddItem "28"
cmb3.AddItem "29"
cmb3.AddItem "30"
cmb3.AddItem "31"
cmb3.AddItem "32"
cmb3.AddItem "33"
cmb3.AddItem "34"
cmb3.AddItem "35"
cmb3.AddItem "36"
cmb3.AddItem "37"
cmb3.AddItem "38"
cmb3.AddItem "39"
cmb3.AddItem "40"
cmb3.AddItem "41"
cmb3.AddItem "42"
cmb3.AddItem "43"
cmb3.AddItem "44"
cmb3.AddItem "45"
cmb3.AddItem "46"
cmb3.AddItem "47"
cmb3.AddItem "48"
cmb3.AddItem "49"
cmb3.AddItem "50"
cmb3.AddItem "51"
cmb3.AddItem "52"
cmb3.AddItem "53"
cmb3.AddItem "54"
cmb3.AddItem "55"
cmb3.AddItem "56"
cmb3.AddItem "57"
cmb3.AddItem "58"
cmb3.AddItem "59"
cmb3.AddItem "60"
cmb3.AddItem "61"
cmb3.AddItem "62"
cmb3.AddItem "63"
cmb3.AddItem "64"
cmb3.AddItem "65"
cmb3.AddItem "66"
cmb3.AddItem "67"
cmb3.AddItem "68"
cmb3.AddItem "69"
cmb3.AddItem "70"
cmb3.AddItem "71"
cmb3.AddItem "72"
cmb3.AddItem "73"
cmb3.AddItem "74"
cmb3.AddItem "75"
cmb3.AddItem "76"
cmb3.AddItem "77"
cmb3.AddItem "78"
cmb3.AddItem "79"
cmb3.AddItem "80"
cmb3.AddItem "81"
cmb3.AddItem "82"
cmb3.AddItem "83"
cmb3.AddItem "84"
cmb3.AddItem "85"
cmb3.AddItem "86"
cmb3.AddItem "87"
cmb3.AddItem "88"
cmb3.AddItem "89"
cmb3.AddItem "90"
cmb3.AddItem "91"
cmb3.AddItem "92"
cmb3.AddItem "93"
cmb3.AddItem "94"
cmb3.AddItem "95"
cmb3.AddItem "96"
cmb3.AddItem "97"
cmb3.AddItem "98"
cmb3.AddItem "99"

 'Use drop-down list
 cmb3.Style = fmStyleDropDownList
 
 'Combo box values are ListIndex values
 cmb3.BoundColumn = 0
 
 'Set combo box to first entry
 cmb3.ListIndex = 0
 cmb3.Font.Bold = True
 cmb3.Font.Size = 12
 
 Select Case cmb2.Value
 Case Is = "others" 'Hinweis: Gross/Kleinschreibung
  cmb3.Enabled = True
 Case Else
  cmb3.Enabled = False
End Select
 
End Sub
Top
#10
Die Select-Anweisung darf in das Change-Ereignis() der Combobox.
Somit wird der Code durchlaufen, wenn Du an der Combobox "den Wert umstellst".
In dem jetzigen Ereignis wird der Code nur einmal durchlaufen; und zwar beim initialisieren des Formulars.

Schau Dir beide Beschreibungen in der Onlinehilfe an.

Code:
Private Sub cmb3_Change()
    Select Case cmb2.Value
        Case Is = "others" 'Hinweis: Gross/Kleinschreibung
            cmb3.Enabled = True
        Case Else
            cmb3.Enabled = False
    End Select
End Sub

Und das hier:
Code:
'PLZ auswählen
cmb3.AddItem "01"
cmb3.AddItem "02"
cmb3.AddItem "03"
cmb3.AddItem "04"
cmb3.AddItem "05"
cmb3.AddItem "06"
cmb3.AddItem "07"
cmb3.AddItem "08"
cmb3.AddItem "09"
cmb3.AddItem "10"
cmb3.AddItem "11"
cmb3.AddItem "12"
cmb3.AddItem "13"
cmb3.AddItem "14"
...

Kürzen wir wie folgt ab:

Code:
    Dim i As Integer: i = 1
    With cmb3
        For i = 1 To 100 Step 1
            If .ListCount < 9 Then
                .AddItem "0" & i
            Else
                .AddItem i
            End If
        Next i
    End With
Top


Gehe zu:


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