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