Aktuell kann es Probleme bei der Anmeldung mit dem Chrome oder Edge Browser geben. Ihr müsstet in die Einstellungen des Browsers gehen und Cache, Cookies und sofern vorhanden, gespeicherte Passwörter vom CEF löschen oder alternativ auf einen anderen Browser ausweichen. Ursache sind vermutlich kürzliche Browserupdates. x

Quellcode kürzen - mehrere if abfragen durch for Schleife ersetzen?
#1
Grüß euch,

ich möchte Checkboxen in der Userform bei einem "û" ausgrauen. Dies klappt so ganz gut: (hier nur 4, in Wirklichkeit sind es viel mehr)
Code:
           If Cells(8, 12).Value = "û" Then
           chkApfel.Enabled = False
           End If
           
           If Cells(8, 13).Value = "û" Then
           chkBirne.Enabled = False
           End If
           
           If Cells(8, 14).Value = "û" Then
           chkBanane.Enabled = False
           End If

           If Cells(8, 15).Value = "û" Then
           chkOrange.Enabled = False
           End If
Nun möchte ich den Code etwas verkürzen. Mein Programmierwissen geht gegen 0, mein Versuch:
 
Code:
For i = 12 To 15
            
                If Cells(8, i) = "û" Then
               
               chkApfel.Enabled = False
                chkBirne.Enabled = False          'etc..

                
                End If
           
           Next i
So solls aber nicht laufen. Wenn in Cells(8,12) ein û steht, soll chkApfel.Enabled = False sein. Wenn in Cells(8,13) ein û steht, soll chkBirne.Enabled = False sein. Wie löse ich das? Danke euch!
Top
#2
Hallo,

vielleicht so?

PHP-Code:
Sub prcX()
 
  Dim i As Long
   Dim vntArray 
As Variant
   
   vntArray 
= Array("Apfel""Birne"'die weiteren Begriffe einfügen, sonst gibt es einen Fehler!
   
   
   For i = 12 To 15
               
                   If Cells(8, i) = "û" Then
                   
                   Controls("chk" & vntArray(i - 12)).Enabled = False
   ' 
               chkApfel.Enabled False
   
'                chkBirne.Enabled = False          'etc..
 
  
                   
                   End 
If
 
              
               Next i
   
End Sub 
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • Abitus
Top
#3
Hi Stefan,

an ein Array hätte ich nie gedacht! Hab ich das richtig verstanden, dass das erste Wort im Array dann die 0 zugewiesen bekommt?
Danke dir, klappt super und sieht auch nach was aus!
Top
#4
Hallo Abitus,

standardmäßig bekommt der erste Eintrag eines Arrays den Index 0.
Es gibt aber Ausnahmen.
Wenn Du z.B. Zellbereiche übernimmst, geht es immer von 1 aus.
Wenn Du generell die 1 haben willst, programmierst Du am Modulanfang
Option Base 1
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#5
Thumbs Up 
Danke für die Erklärung, perfekt
Top


Gehe zu:


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