Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1084to1088
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
CheckBoxen mit VBA umbenennen
Mister
Hallo und guten Morgen,
ich habe eine große UF mit 6 Pages. Die UF beinhaltet sehr viele Checkboxen die den Namen Checkbox1 bis etwa Checkbox80 haben. Die CheckBoxen werden mit einer Schleife aktiviert sofern Bedingunen erfüllt sein sollen. Es kommt aber vor, dass ich einen neuen CheckBox "dazwischen" schieben muss und ich muss dann auch alle CheckBoxen danach umbenennen damit es mit der Schleife noch funktioniert. Meine Frage: kann man mit einer anderen Schleife den Namen der nachfolgenden Checkboxen ändern? Ich habe folgendes versucht aber es klappt nicht:
Dim i As Long
For i = 30 To 80
Me.Controls("CheckBox" & i).Namen = Format("CheckBox") & i + 1
Next
Hat jemand eine Idee?
Gruß
Martin

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: CheckBoxen mit VBA umbenennen
04.07.2009 12:24:25
Original
Hi,
die Eigenschaft Name ist zur Laufzeit geschützt, d.h. er kann per Code nicht geändert
werden.
Wenn die Boxen zur Laufzeit erstellt werden, dann kann ein Name vergeben werden.
mfg Kurt
AW: CheckBoxen mit VBA umbenennen
04.07.2009 12:26:40
Gerd
Hallo Martin!
Es kommt aber vor, dass ich einen neuen CheckBox "dazwischen" schieben muss
Erstelle alle (auch die zusätzliche) im Editor u. deaktiviere die temporär nicht benötigte
mit .Visible=False und .Enabled=False
Frage einer dieser Eigenschaften in deiner Bearbeitungs-Schleife ab.
Änderen kannst deren Namen nur dann, wenn die Checkboxen zur Laufzeit (per Code) erstellt worden
sind.
Gruß Gerd
Anzeige
zur Laufzeit oder im Entwicklungsmodus ?
04.07.2009 12:43:42
ransi
HAllo
Oder willst du die CheckBoxen im Entwicklungsmodus umbenennen ?
ransi
AW: zur Laufzeit oder im Entwicklungsmodus ?
04.07.2009 13:28:43
Mister
Hallo,
es sieht so aus, dass mein Vorhaben nicht realisierbar ist. Schade :-(
@ Ransi
Ich hatte es mir so vorgestellt, dass ich z.B. zwischen CheckBoxen 29 und 30 einen neuen Box einfüge der CheckBox30 heissen soll, der alte Box30 soll dann CheckBox31 heissen, Box31 wird 32 usw.
Gruß
Martin
AW: zur Laufzeit oder im Entwicklungsmodus ?
04.07.2009 14:49:17
ransi
HAllo MArtin
Soll das zur Laufzeit, also wenn die Userform angezeigt wird passieren, oder wenn du grade an der Userform schraubst ?
ransi
AW: zur Laufzeit oder im Entwicklungsmodus ?
04.07.2009 14:56:35
Mister
Hallo,
wenn ich daran schraube!
Gruß
Martin
Anzeige
Für Entwicklungsmodus...
05.07.2009 12:42:47
Tino
Hallo,
habe hier mal etwas zusammengebaut.
Zu beachten ist die Reihenfolge,
es wird oben nach unten durchnummeriert wobei von links nach rechts gegangen wird.
Ich benutze auch eine Hilfstabelle die danach wieder gelöscht wird.
kommt als Code in Modul1
Option Explicit 
 
Sub test() 
Dim objCh 
Dim i As Integer, ii As Integer 
Dim myAr(), myArCh 
Dim temSH As Worksheet 
 
With Application 
 .ScreenUpdating = False 
 .EnableEvents = False 
 .DisplayAlerts = False 
 
    With ThisWorkbook.VBProject 
        For i = 1 To .VBComponents.Count 
          If .VBComponents(i).Name = "UserForm1" Then 
           Set objCh = .VBComponents(i) 
           Exit For 
          End If 
        Next i 
    End With 
     
    Redim myAr(objCh.Designer.Controls.Count - 1, 1 To 3) 
     
    For i = 0 To objCh.Designer.Controls.Count - 1 
     If TypeName(objCh.Designer.Controls.Item(i)) = "CheckBox" Then 
        objCh.Designer.Controls.Item(i).Name = "TempNameCH" & i + 1 
        myAr(ii, 1) = i 
        myAr(ii, 2) = objCh.Designer.Controls.Item(i).Left 
        myAr(ii, 3) = objCh.Designer.Controls.Item(i).Top 
        ii = ii + 1 
     End If 
    Next i 
     
    Set temSH = Worksheets.Add 
     
    With temSH 
     .Range("A1").Resize(Ubound(myAr, 1) + 1, Ubound(myAr, 2)) = myAr 
     .UsedRange.Sort .Range("B1"), xlAscending, .Range("C1"), , xlAscending, , , xlNo 
      myArCh = .Range("A1", .Cells(.Rows.Count, 1).End(xlUp)) 
     .Delete 
    End With 
     
    ii = 1 
     
    For i = 1 To Ubound(myArCh) 
     objCh.Designer.Controls.Item(myArCh(i, 1)).Name = "CheckBox" & ii 
     ii = ii + 1 
    Next i 
  
 .ScreenUpdating = True 
 .EnableEvents = True 
 .DisplayAlerts = True 
End With 
End Sub 


Gruß Tino

Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige