Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1156to1160
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

Erweiterung evtl. Hajo ?

Erweiterung evtl. Hajo ?
walli
Hallo zusammen,
habe das unten stehende Makro von Hajo erhlaten.
Das funktioniert alles bestens !
Nun möchte ich gern in der Darstellung der UF Checkboxen einiges
anpassen.
1. Wie kann ich die CB von oben nach unten nummerisch Durchnummerieren ?
2. Wie kann ich vielleicht auch dann nebeneinander z.b. 4 CB Reihen darstellen ?
Vielleicht kann man mir das mit Beschreibung darstellen, damit ich es auch verstehe
und für späteren Bedarf selbst erstellen kann !
DANKE im Voraus,
mfg Walli
Private Sub UserForm_Activate()
'* 12.05.10                                      *
'* erstellt von Karin, http://beverly.excelhost.de*
'* beverly@excelhost.de                           *
Dim obj_chk As MSForms.CheckBox                                 ' Variable für Objekt  _
Checkbox
Dim LoJ As Long
Dim LoK As Long
Dim LoI As Long
Dim loZaehler  As Long
Dim InI As Integer
Dim Razelle As Range
' Bildschirmaktualisierung ausschalten
Application.ScreenUpdating = False
LoJ = 0
LoK = 5
InI = 0
loZaehler = 0
' Schleife über die Einträge
' For LoI = 1 To 16                                               ' 16 Spalten Orginal
' Schleife über die Einträge
' -1 da erst in Spalte B begonnen wird
For LoI = 1 To IIf(IsEmpty(Cells(2, Columns.Count)), _
Cells(2, Columns.Count).End(xlToLeft).Column, Columns.Count) - 1
Set obj_chk = Me.Controls.Add("Forms.checkbox.1", "Checkbox" & LoI, True)
' Eigenschaften der erstellten Checkbox zuweisen
With obj_chk
If LoK = 5 Then
.Left = 30                                          ' Position links
LoK = 0
'  LoK = 5                   'Hier dannwird 1 Reihe gesetzt
Else
.Left = 160   ' 120                                 ' Position links
LoK = 5
End If
.Top = 35 + 30 * loZaehler + 1                          ' Position oben
.Width = 150                                            ' Breite 150
.Height = 25                                            ' Höhe   25
.Tag = LoI + 1                                          ' Spalte
.Caption = Worksheets("Tabelle3").Cells(2, LoI + 1)    ' Beschriftung aus ZEile 2  _
und Spalte Loi+1
.Value = Worksheets("Tabelle3").Columns(LoI + 1).Hidden        ' vom 14.0510 Hidden-Status  _
Spalte
End With
ReDim Preserve COption(0 To InI)                        ' Neudimensionierung des Array
Set COption(InI).CheckBox = obj_chk                     ' CheckBox zur Klasse  _
zusammenfassen
InI = InI + 1                                           ' Zähler für das Array
LoJ = LoJ + 1
If LoK = 5 Then loZaehler = loZaehler + 1
Next LoI
loZaehler = loZaehler + 1
If LoJ Mod 2 = 0 Then loZaehler = loZaehler - 1
If loZaehler 

AW: Dynamische Userform
18.05.2010 14:46:08
Hajo_Zi
Hallo Walli,
in dem Code werden die Checkboxen nebeneinander gemacht als erst 1 Reihe links dann 1 Reihe rechts usw. in den nächsten Reihen. Als Beschriftung wurden die Spaltenbeschriftung benutzt.das soll jetzt geändert werden auf nur Zahlen?
Ich bin jetzt gleich auf dem Heimweg. Hier kann ich mich damit nicht mehr befassen. Für solche Sachen muss ich auch an meinem HomeComputer sitzen.

AW: Erweiterung evtl. Hajo ?
18.05.2010 15:31:45
Hajo_Zi
Hallo Walli,
auf meinen ersten Beitrag kam ja keine Reakion.
Jetzt den Code für mehr Spalten.
Option Explicit
Private Sub UserForm_Activate()
'* 12.05.10                                      *
'* erstellt von Karin, http://beverly.excelhost.de*
'* beverly@excelhost.de                           *
Dim obj_chk As MSForms.CheckBox                                 ' Variable für Objekt  _
Checkbox
Dim LoJ As Long
Dim LoK As Long
Dim LoI As Long
Dim loZaehler  As Long
Dim InI As Integer
Dim Razelle As Range
' Bildschirmaktualisierung ausschalten
Application.ScreenUpdating = False
LoJ = 0
LoK = 5
InI = 0
loZaehler = 0
' Schleife über die Einträge
' -1 da erst in Spalte B begonnen wird
For LoI = 1 To IIf(IsEmpty(Cells(2, Columns.Count)), Cells(2, Columns.Count).End(xlToLeft). _
Column, Columns.Count) - 1                                            ' 16 Spalten
Set obj_chk = Me.Controls.Add("Forms.checkbox.1", "Checkbox" & LoI, True)
' Eigenschaften der erstellten Checkbox zuweisen
With obj_chk
If LoK = 5 Then
.Left = 30                                          ' Position links
LoK = 10
ElseIf LoK = 10 Then                                    ' 2 spalte
.Left = 120                                         ' Position links
LoK = 15
ElseIf LoK = 15 Then                                    ' 2 spalte
.Left = 210                                         ' Position links
LoK = 20
ElseIf LoK = 20 Then                                    ' 2 spalte
.Left = 300                                         ' Position links
LoK = 5
End If
.Top = 35 + 30 * loZaehler + 1                          ' Position oben
.Width = 150                                            ' Breite
.Height = 25                                            ' Höhe
.Tag = LoI + 1                                          ' Spalte
.Caption = Worksheets("Tabelle3").Cells(2, LoI + 1)    ' Beschriftung aus Zeile 2  _
und Spalte Loi+1
.Value = Worksheets("Tabelle3").Columns(LoI + 1).Hidden ' Hidden-Status Spalte
End With
ReDim Preserve COption(0 To InI)                            ' Neudimensionierung des  _
Array
Set COption(InI).CheckBox = obj_chk                     ' CheckBox zur Klasse  _
zusammenfassen
InI = InI + 1                                               ' Zähler für das Array
LoJ = LoJ + 1
If LoK = 5 Then loZaehler = loZaehler + 1
Next LoI
loZaehler = loZaehler + 1
If LoJ Mod 2 = 0 Then loZaehler = loZaehler - 1
If loZaehler 
Gruß Hajo
Anzeige
Hallo Hajo, war im Personalgespräch
18.05.2010 16:04:23
walli
Hallo Hajo,
bin jetzt gerade auch im STRESSSS.
Danke aber für die Hilfe und die 1. Info.
melde mich entweder heute Abend oder morgen Früh.
Es oll sonst nichts verändert werden nur die beiden Fragen !
1. Wie kann ich die CB von oben nach unten nummerisch Durchnummerieren ?
2. Wie kann ich vielleicht auch dann nebeneinander z.b. 4 CB Reihen darstellen ?
Es funktioniert sonst alles. !!!
mfg Walli
auf False setzen
18.05.2010 16:23:45
walli
Hallo Hajo,
hatte mal ein Makro gefunden, wenn ich die CB wieder
auf False setzen möchte.
Das Problem, ich muß die Anzahl eingeben.
Würde mich freuen wenn Du mir dazu eine Hilfe geben könntest.
Dim i As Integer
For i = 1 To 13
Me.controls("checkbox" & i).Value = False
Next i
mfg walli
Anzeige
Nimm das andere FOR (For Each c In Me.Controls)!
18.05.2010 17:39:40
Luc:-?
Hi Walli,
du musst dann natürlich im Zyklus noch den Namen prüfen…
If Left(LCase(c.Name), 8) = "checkbox" Then c.Value = False
Die Laufvariable c muss Object (oder Variant) sein!
Gruß Luc :-?
Danke Luc ! -)
18.05.2010 19:55:27
walli
Luc bitte nochmal schauen
19.05.2010 12:55:26
walli
Hallo Luc,
habe mal so reingegeben, leider ohne Erfolg.
Dim c
Dim i As Integer
For Each c In Me.controls
' For i = 1 To 13
Me.controls("checkbox" & c).Value = False
Next c
mfg walli
Hallo Luc, habe Lösung gefunden --))
19.05.2010 13:38:39
walli
Hallo Luc,
so klappt es,
danke für die Hilfe von GESTERN,
mfg walli
Dim i As Integer
For Each c In Me.controls
If Left(LCase(c.Name), 8) = "checkbox" Then c.Value = False
Next c
Anzeige
Das hatte ich ja auch so geschrieben... ;-) orT
19.05.2010 20:04:14
Luc:-?
Bitte sehr, Gruß Luc :-?
PS: c solltest du noch deklarieren (Dim c As…)! Hatte ich auch geschrieben!
Danke Luc f. den Hinweis !;-) orT
20.05.2010 13:30:57
walli
AW: auf False setzen
18.05.2010 18:30:08
Hajo_Zi
Hallo Wali,
das Problem vertehe ich nicht!
Gruß Hajo
AW: Durchnummerieren
18.05.2010 18:33:18
Hajo_Zi
Hallo Walli,
4 Reihen stellt mein Code doch da.
Durchnummerieren von oben nach unten ist aufwendig. Für so aufwendige Sachen habe ich in der Woche wenig Zeit.
Von Links nach rechts wäre einfacher.
Gruß Hajo
DANKE Hajo -)
18.05.2010 19:58:24
walli
Hallo Hajo,
danke ich lass es so.
Habe nur noch ein Makro nötig gehabt für das alle CB auf False
gesetzt werden.
Mal sehen wie ich jetzt mit Luc Beispiel hinkomme,
schönen Abend noch,
mfg walli
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige