Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Checkboxen in Frame automatisch erzeugen
#1
Hallo zusammen,
ich hab da eine Anforderung und muss in einem Frame so an die 100 Checkboxen, Textboxen etc. erstellen.
Gibt es ne Möglichkeit die ganzen Checkboxen automatisch zu generieren ?Confused
Wenn ja, hat da jemand von euch schon sowas, oder kann jemand mir einen Tipp geben wie ich sowas anstellen muss.
Vielen Dank

Gruß
Klaus
to top
#2
Hallo Klaus,

so z.B.:

Code:
Private Sub UserForm_Initialize()
  Dim i As Long, j As Long
  For i = 1 To 10
    For j = 1 To 10
      With Me.Frame1.Controls.Add("Forms.CheckBox.1")
        .Top = 15 * j
        .Left = 15 * i
      End With
    Next j
  Next i
End Sub

Gruß Uwe
[-] Folgende(r) 1 Benutzer sagt Danke an Kuwer für diesen Beitrag:
DeBabba
to top
#3
Hallo Uwe
vielen dank
Das ist wirklich alles ??? Ich bin erstaunt.
Dann kann ich ja auch den Namen der Checkboxen anpassen usw.
Cooool 100
Vielen Vielen Dank

Gruß
Klaus
to top
#4
Hallo Uwe,
noch ne Frage
Zitat:With Me.Frame1.Controls.Add("Forms.CheckBox.1")
Was bedeutet das .1 am Ende ??

Gruß
Klaus
to top
#5
Hallo Klaus,

das ist eine ProgID, welche so vorgegeben ist.

Aus der Hilfe für Add:

Die ProgID-Werte für einzelne Steuerelemente sind:
Kontrollkästchen Forms.CheckBox.1
Kombinationsfeld Forms.ComboBox.1
Befehlsschaltfläche Forms.CommandButton.1
Rahmen Forms.Frame.1
Abbildung Forms.Image.1
Bezeichnungsfeld Forms.Label.1
Listenfeld Forms.ListBox.1
Multiseiten Forms.MultiPage.1
Optionsfeld Forms.OptionButton.1
Bildlaufleiste Forms.ScrollBar.1
Drehfeld Forms.SpinButton.1
Register Forms.TabStrip.1
Textfeld Forms.TextBox.1
Umschaltfeld Forms.ToggleButton.1

Copyright© 1996 Microsoft Corporation.


Gruß Uwe
to top
#6
Hi Uwe
Ah ja..
und wie bekomme ich das hin , dass die eingefügten Forms auch erhalten bleiben ?
Mein Gedanke ist, dass ich mir Frames halbwegs automatisch erstellen kann
Etwas so msgbox In Welcher Form soll
Wieviele ...
und dann gehts los und das Formular ist bestückt
Also die Forms in der Entwicklungsumgebung erzeugen ?

Kannst Du mir das auch weiterhelfen ??
Gruß
Klaus
to top
#7
Hallo Klaus,

eigentlich würde es aus meiner Sicht reichen, wenn Du Excel das Userform zur Laufzeit erzeugen lässt. Es geht aber auch, wie von Dir gewünscht. Bei Microsoft gibt es da einen Artikel drüber, wo ein Userform mit einer Checkbox erzeugt wird:
http://support.microsoft.com/kb/185774/de
Falls Du den durchgehst, beachte bitte am Anfang den Hinweis auf den Verweis zu "Microsoft Visual Basicfor Applications Extensibility"
Hier mal ein angepasster VBA-Code auf basis der Microsoft-Seite, siehe auch die Kommentare. Eingaben usw. sind noch nicht dabei, ist aber erst mal ein Funktionsbeispiel.

Code:
Sub Add_UF_CBO()
    'Variablendeklaration
    Dim mynewform As Object, mycheckbox As Object, myframe As Object
    Dim iCnt%, strCode$
    'vorhandenes UserForm zuweisen
    Set mynewform = _
      Application.VBE.ActiveVBProject.VBComponents("UserForm2")
    'Schleife fuer n Checkboxen (hier fest 10)
    For iCnt = 1 To 10
      'neue Checkbox im Rahmen Frame1 hinzufuegen
      Set mycheckbox = mynewform.Designer.Controls("Frame1").Add("Forms.CheckBox.1")
      'Mit der neuen checkbox...
      With mycheckbox
         .Name = "Check_" & iCnt
         .Caption = "Check here " & iCnt
         .Left = 10
         .Top = 20 * iCnt
         .Height = 20
         .Width = 100
      End With
      'Ereigniscode fuer Checkbox erstellen
      strCode = "Private Sub Check_" & iCnt & "_Click" & vbLf
      strCode = strCode & "   MsgBox ""Check_" & iCnt & " gedrückt!" & vbLf
      strCode = strCode & "End Sub"
      'Ereigniscode in das Codemodul der Userform schreiben
      ThisWorkbook.VBProject.VBComponents("Userform2") _
         .CodeModule.AddFromString strCode
    'Ende Schleife fuer n Checkboxen (hier fest 10)
    Next
End Sub
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
[-] Folgende(r) 1 Benutzer sagt Danke an schauan für diesen Beitrag:
DeBabba
to top
#8
Hallo Klaus,

ich konnte leider nicht eher (Abteilungsnachmittag: Besichtigung Ludwigsburger Schloss hinter den Kulissen mit anschließender intensiver Besprechung im Brauhaus am Bahnhof. Wink )

Also erst einmal 2 Prozeduren zum Resetten der UF.
Denn es ist nervig, wenn man rumspielt und zig Elemente in der UF (auch übereinander) hat und wieder löschen muss.

Code:
Sub UserForm1_Alles_Leeren()
  ActiveWorkbook.VBProject.VBComponents("UserForm1").Designer.Controls.Clear
End Sub

Sub UserForm1_Frame1_Leeren()
  ActiveWorkbook.VBProject.VBComponents("UserForm1").Designer.Frame1.Controls.Clear
End Sub

Und nun ein Beispiel wie vorher, aber ohne Ereignisprozedurenzuweisungen wie bei André:

Code:
Sub UserForm_Frame1_Bestuecken()
  Dim i As Long, j As Long
  Dim AnzahlSpalten As Variant, AnzahlZeilen As Variant
  With ActiveWorkbook.VBProject.VBComponents("UserForm1").Designer
    AnzahlZeilen = InputBox("Anzahl Zeilen:", , 2)
    AnzahlSpalten = InputBox("Anzahl Spalten:", , 2)
    If IsNumeric(AnzahlSpalten) And IsNumeric(AnzahlZeilen) Then
      If AnzahlSpalten * AnzahlZeilen Then
        For i = 1 To AnzahlZeilen
          For j = 1 To AnzahlSpalten
            With .Frame1.Controls.Add("Forms.CheckBox.1")
              .Top = 15 * j
              .Left = 15 * i
            End With
          Next j
        Next i
      Else
        MsgBox "Die Angaben waren nicht verwertbar!"
      End If
    Else
      MsgBox "Die Angaben waren nicht verwertbar!"
    End If
  End With
End Sub

Gruß Uwe
to top
#9
Hi Uwe,
vielen Dank für Dein Script.
Ich werde das mal testen, sobald ich aus den verschiedenen Freitagsbesprechungen raus bin (bei mir ohne Brauhaus 1527)
Dank Dir schon mal und gebe Dir noch ne Info, ob alles funzt

Gruß
Klaus
to top
#10
Hallo Uwe,
sorry , hatt am Freitag keinen Bock mehr
Aber jetzt
Funktioniert Prima.
Ich werde das Ganze etwas erweitern (Größe, Schriftgröße, Position, Beschriftung usw.
Sobald ich das fertig habe, sende ich Dir das mal zu
100 717128Thumbsupsmileyanim
Vielen Dank für Deine Hilfe
9798746423

Gruß
klaus
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  2 PDF erzeugen von 2 Arbeitsblättern erzeugen Pablow89 1 46 25.11.2016, 22:31
Letzter Beitrag: schauan
Question Mehrere Checkboxen per Vba in einer Tabelle J21 18 240 17.11.2016, 15:41
Letzter Beitrag: Rabe
  Blätter erzeugen und umbenennen WeisserWolf611 2 237 01.08.2016, 11:13
Letzter Beitrag: WeisserWolf611
  Geburtstagskarte - Farbige Wörter per VBA erzeugen Lago 6 531 27.07.2016, 13:33
Letzter Beitrag: Lago
  VBA Checkboxen immer wiederkehrend hbboy15 10 583 06.06.2016, 20:53
Letzter Beitrag: Rabe
  Checkboxen auf Übereinstimmung prüfen / bed. Formatierung Ratsuchender 19 744 27.04.2016, 10:07
Letzter Beitrag: Ratsuchender
  Steuern von Drittprogrammen BarCode erzeugen Frank BST 17 1.044 26.04.2016, 17:24
Letzter Beitrag: RPP63
  Makro PDF erzeugen - Fehler WatchAroundQS 5 856 10.01.2016, 11:39
Letzter Beitrag: schauan
  Aus zwei Spalten eine Spalte erzeugen Dolly 8 1.078 23.12.2015, 12:14
Letzter Beitrag: Dolly
  VBA - Neues Sheet erzeugen alti89 63 6.957 11.11.2015, 09:13
Letzter Beitrag: alti89

Gehe zu:


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