Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Friedrichroda /
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
  Audiodatei im gewünschten Format erzeugen Josefine Baker 4 77 22.03.2017, 11:57
Letzter Beitrag: Josefine Baker
  URL aus Excel im Browser öffnen und PDF erzeugen Michael05 1 66 26.02.2017, 06:13
Letzter Beitrag: mumpel
  Tabellenblätter erzeugen: Anhand Liste und verschiedener Vorlagen erstellen Thermes 14 283 06.02.2017, 12:43
Letzter Beitrag: Thermes
  Mail per VBA erzeugen und automatisch Link in Inhalt einfügen eitel91 4 155 31.01.2017, 13:09
Letzter Beitrag: eitel91
  Checkboxen headloose 2 116 12.01.2017, 20:54
Letzter Beitrag: atilla
  Button Druck PDF erzeugen hbboy15 5 286 11.01.2017, 14:20
Letzter Beitrag: Rabe
  mit Excel Kalendereinträge erzeugen und versenden march 2 191 29.12.2016, 07:58
Letzter Beitrag: lupo1
Question Steuerelemente steuern / entsprechend Auswahl neue Auswahl erzeugen fredrre 1 177 20.12.2016, 19:37
Letzter Beitrag: schauan
  Zeilen mit Checkboxen ausblenden/einblenden Hawkeye 1 128 19.12.2016, 23:50
Letzter Beitrag: Kuwer
  2 PDF erzeugen von 2 Arbeitsblättern erzeugen Pablow89 1 153 25.11.2016, 22:31
Letzter Beitrag: schauan

Gehe zu:


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