Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1768to1772
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Schleife

Schleife
02.07.2020 09:57:17
Holger
Guten Morgen,
ich habe schon einen Funktionierenden Code,
denke das man diesen aber in einer Schleife einfacher machen kann.
Leider ist mein können beschränkt und bekomme es nicht hin.
Da es immer eine Spalte mehr ist und die Checkbox und Label immer um 1 ansteigt, könnte ich mir vorstellen das es mit einer For Next Schleife einfacher ist.
Ich habe bis CheckBox336 und Label336 in meiner Userform3
Er geht bis Spalte 340.
Das ist ein Teil meines Code
If Range("P5").Value = Schicht Then
CheckBox1.Visible = True
CheckBox1.Caption = Range("C5").Value
Label1.Caption = Range("N5").Value
Else
CheckBox1.Visible = False
Label1.Visible = False
End If
If Range("P6").Value = Schicht Then
CheckBox2.Visible = True
CheckBox2.Caption = Range("C6").Value
Label2.Caption = Range("N6").Value
Else
CheckBox2.Visible = False
Label2.Visible = False
End If
If Range("P7").Value = Schicht Then
CheckBox3.Visible = True
CheckBox3.Caption = Range("C7").Value
Label3.Caption = Range("N7").Value
Else
CheckBox3.Visible = False
Label3.Visible = False
End If
If Range("P8").Value = Schicht Then
CheckBox4.Visible = True
CheckBox4.Caption = Range("C8").Value
Label4.Caption = Range("N8").Value
Else
CheckBox4.Visible = False
Label4.Visible = False
End If
If Range("P9").Value = Schicht Then
CheckBox5.Visible = True
CheckBox5.Caption = Range("C9").Value
Label5.Caption = Range("N9").Value
Else
CheckBox5.Visible = False
Label5.Visible = False
End If
If Range("P10").Value = Schicht Then
CheckBox6.Visible = True
CheckBox6.Caption = Range("C10").Value
Label6.Caption = Range("N10").Value
Else
CheckBox6.Visible = False
Label6.Visible = False
End If
If Range("P11").Value = Schicht Then
CheckBox7.Visible = True
CheckBox7.Caption = Range("C11").Value
Label7.Caption = Range("N11").Value
Else
CheckBox7.Visible = False
Label7.Visible = False
End If
If Range("P12").Value = Schicht Then
CheckBox8.Visible = True
CheckBox8.Caption = Range("C12").Value
Label8.Caption = Range("N12").Value
Else
CheckBox8.Visible = False
Label8.Visible = False
End If
If Range("P13").Value = Schicht Then
CheckBox9.Visible = True
CheckBox9.Caption = Range("C13").Value
Label9.Caption = Range("N13").Value
Else
CheckBox9.Visible = False
Label9.Visible = False
End If
If Range("P14").Value = Schicht Then
CheckBox10.Visible = True
CheckBox10.Caption = Range("C14").Value
Label10.Caption = Range("N14").Value
Else
CheckBox10.Visible = False
Label10.Visible = False
End If
Ich denke das es für einen Profi einfach ist, daraus eine Schleife zu erstellen.
Es wäre auch schön wenn er Code mir etwas eklärt wir wo für was steht, damit ich ihn verstehe.
Vielen Dank schon mal dafür

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife
02.07.2020 10:11:31
Martin
Schau mal ob der Code funktioniert. Mit Cstr() machst du aus deiner Laufvariablen eine String und kannst diesen entsprechen einfügen.
Viele Grüße
Martin
Sub Checkbox()
Dim zs as String
For i=5 to 14
zs=cstr(i)
If Range("P"&zs).Value = Schicht Then
CheckBox10.Visible = True
CheckBox10.Caption = Range("C"&zs).Value
Label10.Caption = Range("N"&zs).Value
Else
CheckBox10.Visible = False
Label10.Visible = False
End If
Next i
End Sub

AW: Schleife
02.07.2020 10:22:01
Holger
Hallo Martin schon mal vielen Dank.
nur die Checkbox und Label erhöhen sich nicht um 1.
Habe folgendes versucht CheckBox&(i) klappt aber leider nicht.
Kannst du mir sagen wie ich es machen kann.
Vielen Dank
Anzeige
AW: Schleife
02.07.2020 10:41:27
Martin
Falls das so überhaupt geht würde ich es so versuchen:
Sub Checkbox()
Dim zs as String
For i=5 to 14
zs=cstr(i)
If Range("P"&zs).Value = Schicht Then
CheckBox10.Visible = True
CheckBox10.Caption = Range("C"&zs).Value
Label10.Caption = Range("N"&zs).Value
Else
CheckBox10.Visible = False
Label10.Visible = False
End If
Checkbox10.Name = "CheckBox" & zs
Next i
End Sub
Viele Grüße
Martin
AW: Schleife
02.07.2020 18:32:18
JoWE
Hallo Holger,
versuch mal:
Private Sub UserForm_Initialize()
Dim ctrElement As Control
Dim zsC As Long, zsL As Long
For Each ctrElement In Me.Controls
If TypeName(ctrElement) = "CheckBox" Then
zsC = zsC + 1
If ctrElement.Name = "CheckBox" & zsC _
And Sheets(1).Range("P" & zsC + 4) = "Schicht" Then
ctrElement = True
ctrElement.Visible = True
ctrElement.Caption = Sheets(1).Range("C" & zsC + 4)
Else
ctrElement = False
ctrElement.Visible = False
ctrElement.Caption = ""
End If
End If
If TypeName(ctrElement) = "Label" Then
zsL = zsL + 1
If ctrElement.Name = "Label" & zsL _
And Sheets(1).Range("P" & zsL + 4) = "Schicht" Then
ctrElement.Visible = True
ctrElement.Caption = Sheets(1).Range("N" & zsL + 4)
End If
End If
Next
End Sub
Gruß
Jochen
Anzeige
AW: Schleife
03.07.2020 08:00:20
Holger
Hallo,
vielen Dank für eure Mühe, leider Funktionieren beide Vorschläge nicht.
Bei JoWE sind die Labels eingeblendet und die Checkboxen sind alle ausgeblendet.
Bei Martin bekomme ich eine Fehler Meldung "CheckBox10.Name = "CheckBox" & zs" in der Zeile
Trozdem vielen Dank für eure Mühe
Holger
AW: Schleife
03.07.2020 10:18:08
JoWE
wie wärs denn mit ner Beispielmappe?

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige