Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ToggleButton
BildScreenshot zu ToggleButton ToggleButton-Seite mit Beispielarbeitsmappe aufrufen

Togglebuttons und IF-Schleife


Betrifft: Togglebuttons und IF-Schleife von: Chris
Geschrieben am: 09.01.2018 07:15:02

Hallo Forum,

ich habe eine Userform mit 4 Togglebuttons.
Je nachdem, was in Zelle H11 H12 oder H13 steht sollen die Togglebuttons aktiviert und grün bzw. rot eingefärbt werden. Das Makro unten funktioniert nur bei Togglebutton1. Die anderen Buttons reagieren gar nicht, auch von die Bedingungen erfüllt sind.

Habe ich evtl. die IF-Schleife falsch aufgebaut?

Bin für Korrekturen dankbar. Gruß Chris

 'ToggleButton1 - Zuschlag Angebot A
       
       If Sheets("Auftragsliste").Range("H11").Value = "Zuschlag Angebot A" Then
       UserForm1.ToggleButton1.Value = True
       UserForm1.ToggleButton1.BackColor = RGB(128, 255, 128) 'grün
       
       UserForm1.ToggleButton2.Enabled = False
       UserForm1.ToggleButton3.Enabled = False
       UserForm1.ToggleButton4.Enabled = False
       
       If Sheets("Auftragsliste").Range("H11").Value = "" Then
      
       UserForm1.ToggleButton1.Value = False
       UserForm1.ToggleButton1.BackColor = RGB(255, 128, 128) 'rot
       
       UserForm1.ToggleButton2.Enabled = True
       UserForm1.ToggleButton3.Enabled = True
       UserForm1.ToggleButton4.Enabled = True
       
       'ToggleButton2 - Zuschlag Angebot B
       
       If Sheets("Auftragsliste").Range("H12").Value = "Zuschlag Angebot B" Then
       UserForm1.ToggleButton2.Value = True
       UserForm1.ToggleButton2.BackColor = RGB(128, 255, 128) 'grün
       
       UserForm1.ToggleButton1.Enabled = False
       UserForm1.ToggleButton3.Enabled = False
       UserForm1.ToggleButton4.Enabled = False
       
       If Sheets("Auftragsliste").Range("H12").Value = "" Then
       UserForm1.ToggleButton2.Value = False
       UserForm1.ToggleButton2.BackColor = RGB(255, 128, 128) 'rot
       
       UserForm1.ToggleButton1.Enabled = True
       UserForm1.ToggleButton3.Enabled = True
       UserForm1.ToggleButton4.Enabled = True
       
       'ToggleButton3 - Zuschlag Angebot C
       
       If Sheets("Auftragsliste").Range("H13").Value = "Zuschlag Angebot C" Then
       UserForm1.ToggleButton3.Value = True
       UserForm1.ToggleButton3.BackColor = RGB(128, 255, 128) 'grün
       
       UserForm1.ToggleButton1.Enabled = False
       UserForm1.ToggleButton2.Enabled = False
       UserForm1.ToggleButton4.Enabled = False
      

       If Sheets("Auftragsliste").Range("H13").Value = "" Then
       UserForm1.ToggleButton3.Value = False
       UserForm1.ToggleButton3.BackColor = RGB(255, 128, 128) 'rot
       
       UserForm1.ToggleButton1.Enabled = True
       UserForm1.ToggleButton2.Enabled = True
       UserForm1.ToggleButton4.Enabled = True
       
       End If
       End If
       End If
       End If
       End If
       End If

  

Betrifft: AW: Togglebuttons und IF-Schleife von: chao.soft
Geschrieben am: 09.01.2018 07:48:05

Hi Chris,
ich vermute, dass der Fehler daran liegt, dass du alle IF-Anweisungen ineinander verschachtelt hast. Das bedeutet, dass wenn die erste Bedingung nicht zutrifft, alle anderen Bedingungen auch nicht geprüft werden.

Ich habe deinen Code mal etwas umgestellt. Getestet habe ich es nicht.

'ToggleButton1 - Zuschlag Angebot A
If Sheets("Auftragsliste").Range("H11").Value = "Zuschlag Angebot A" Then
    UserForm1.ToggleButton1.Value = True
    UserForm1.ToggleButton1.BackColor = RGB(128, 255, 128) 'grün
    UserForm1.ToggleButton2.Enabled = False
    UserForm1.ToggleButton3.Enabled = False
    UserForm1.ToggleButton4.Enabled = False  
ElseIf Sheets("Auftragsliste").Range("H11").Value = "" Then
    UserForm1.ToggleButton1.Value = False
    UserForm1.ToggleButton1.BackColor = RGB(255, 128, 128) 'rot
    UserForm1.ToggleButton2.Enabled = True
    UserForm1.ToggleButton3.Enabled = True
    UserForm1.ToggleButton4.Enabled = True
End If
       
'ToggleButton2 - Zuschlag Angebot B
If Sheets("Auftragsliste").Range("H12").Value = "Zuschlag Angebot B" Then
    UserForm1.ToggleButton2.Value = True
    UserForm1.ToggleButton2.BackColor = RGB(128, 255, 128) 'grün
    UserForm1.ToggleButton1.Enabled = False
    UserForm1.ToggleButton3.Enabled = False
    UserForm1.ToggleButton4.Enabled = False
ElseIf Sheets("Auftragsliste").Range("H12").Value = "" Then
    UserForm1.ToggleButton2.Value = False
    UserForm1.ToggleButton2.BackColor = RGB(255, 128, 128) 'rot
    UserForm1.ToggleButton1.Enabled = True
    UserForm1.ToggleButton3.Enabled = True
    UserForm1.ToggleButton4.Enabled = True
End If
       
'ToggleButton3 - Zuschlag Angebot C
If Sheets("Auftragsliste").Range("H13").Value = "Zuschlag Angebot C" Then
    UserForm1.ToggleButton3.Value = True
    UserForm1.ToggleButton3.BackColor = RGB(128, 255, 128) 'grün
    UserForm1.ToggleButton1.Enabled = False
    UserForm1.ToggleButton2.Enabled = False
    UserForm1.ToggleButton4.Enabled = False
ElseIf Sheets("Auftragsliste").Range("H13").Value = "" Then
    UserForm1.ToggleButton3.Value = False
    UserForm1.ToggleButton3.BackColor = RGB(255, 128, 128) 'rot
    UserForm1.ToggleButton1.Enabled = True
    UserForm1.ToggleButton2.Enabled = True
    UserForm1.ToggleButton4.Enabled = True
End If



  

Betrifft: AW: Togglebuttons und IF-Schleife von: Chris
Geschrieben am: 09.01.2018 08:27:10

Hallo Chao Soft,

dein Code funktioniert. Offensichtlich hast du recht, es werden - sobald die erste Bedingung nicht zutrifft - weitere IF-Bedingungen nicht weiter geprüft wird.

Ist dies tatsächlich das Wesen einer IF-Schleife? Eigentlich unlogisch, oder?

Deinen Aufbau hatte ich auch schon getestet, mit dem unterschied, dass ich kein "ELSE IF" genutzt hatte:


'ToggleButton3 - Zuschlag Angebot C
       
       If Sheets("Auftragsliste").Range("H13").Value = "Zuschlag Angebot C" Then
       UserForm1.ToggleButton3.Value = True
       UserForm1.ToggleButton3.BackColor = RGB(128, 255, 128) 'grün
       
       UserForm1.ToggleButton1.Enabled = False
       UserForm1.ToggleButton2.Enabled = False
       UserForm1.ToggleButton4.Enabled = False
       End if

       If Sheets("Auftragsliste").Range("H13").Value = "" Then
       UserForm1.ToggleButton3.Value = False
       UserForm1.ToggleButton3.BackColor = RGB(255, 128, 128) 'rot
       
       UserForm1.ToggleButton1.Enabled = True
       UserForm1.ToggleButton2.Enabled = True
       UserForm1.ToggleButton4.Enabled = True
       End if


... gleicher Aufbau für die anderen Buttons.

Auch hier hatte ich keinen Erfolg. Warum?


  

Betrifft: AW: Togglebuttons und IF-Schleife von: chao.soft
Geschrieben am: 09.01.2018 08:49:02

Offensichtlich hast du recht, es werden - sobald die erste Bedingung nicht zutrifft - weitere  _
IF-Bedingungen nicht weiter geprüft wird. 
Ist dies tatsächlich das Wesen einer IF-Schleife? Eigentlich unlogisch, oder?
Ja das ist das Wesen einer IF-Anweisung, sobald die Bedingung nicht zutrifft wird alles, was sich innerhalb der IF-Anweisung befindet übersprungen.

Theoretisch sollte dein letzter Code (ToggleButton3 - Zuschlag Angebot C) funktionieren, da nacheinander beide If-Bedingungen geprüft werden -> wie auch bei der ElseIf.


Beiträge aus dem Excel-Forum zum Thema "Togglebuttons und IF-Schleife"