Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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!
Antworten 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
Antworten 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!
Antworten 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)
Antworten Top
#5
Thumbs Up 
Danke für die Erklärung, perfekt
Antworten Top


Gehe zu:


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