Betrifft: Formen in UserForm Namen zuweisen per Makro
von: kultnoob
Sub UserForm_Click()
Dim NFrame As MSForms.Frame
Dim NCheckbox As MSForms.Checkbox
Dim NCommand1 As MSForms.CommandButton
Dim NCommand2 As MSForms.CommandButton
Dim a, b As Integer
Dim Anzahl As String
' 'UserForm 2 ausblenden
' UserForm2.Hide
' 'UserForm 3 einblenden
' UserForm3.Show
'Verweis auf das Makro Sheets_zaehlen
Call Sheets_zaehlen
'Die Variable b als 0 definieren, da diese dazu dient die Rahmen der Checkboxen innerhalb _
_
_
der UserForm3 vom Top aus zu verschieben
b = 0
'Schleife für die Anzahl Sheets
For a = 1 To Sheet_Anzahl
'Befehl zur Erstellung des Rahmens in welcher später die Checkbox (Kontrollkästchen) _
dargestellt werden
Set NFrame = Me.Controls.Add("Forms.Frame.1", "Frame")
'Definition der Position des Rahmens auf Basis der Variable a
With NFrame
.Height = 42
.Left = 42
.Top = 126 + b
.Width = 246
Sheet_Zahl = a
Call Sheet_Namen_uebergeben
With .Add("Forms.Checkbox.1", "Checkbox")
.Caption = " " & Sheet_Namen
.Name = "Checkbox" & a '''''''''wie kann man einen Namen der _
erstellten Form geben????
.Font.Name = "Porsche Franklin Gothic"
.Font.Size = 18
.Height = 26
.Left = 6
.Top = 6
.Width = 224
End With
End With
'Höhe der Userform definieren
With UserForm3
'Höhe der Userform auf 265 Pixel definieren - b wird ab dem zweiten Rahmen hochgezä _
_
_
hlt
.Height = 265 + b
End With
'Die Variable b um 62 Pixel hochzählen, damit der nächste Rahmen 62 Pixel mehr Abstand _
_
_
hat vom Top als der vorherige Rahmen
b = b + 62
Next a
'Einfügen des Commandbuttons 1
Set NCommand1 = Me.Controls.Add("Forms.CommandButton.1", "CommandButton")
With NCommand1
.Caption = "Einladung erstellen"
.Font.Size = 12
.Font.Name = "Porsche Franklin Gothic"
.Height = 30
.Left = 12
.Top = 125 + b
.Width = 138
End With
'Einfügen des Commandbuttons 2
Set NCommand2 = Me.Controls.Add("Forms.CommandButton.1", "CommandButton")
With NCommand2
.Caption = "Zurück"
.Font.Size = 12
.Font.Name = "Porsche Franklin Gothic"
.Height = 30
.Left = 180
.Top = 125 + b
.Width = 138
End With
' Prüfen, welche Kontrollkästchen gewählt wurden
End Sub
Option Explicit
Public Sheet_Anzahl As Integer
Public Sheet_Namen As String
Public Sheet_Zahl As String
Public a As Integer
Sub Sheets_zaehlen()
'Anzahl der Sheets zählen
Sheet_Anzahl = ActiveWorkbook.Sheets.Count
End Sub
Sub Sheet_Namen_uebergeben()
a = Sheet_Zahl
'Auf Basis der Variable "Sheetzahl" den Namen des Sheets auslesen und der Variable _
Sheets_Namen übergeben
Sheet_Namen = ActiveWorkbook.Sheets(a).Name
End Sub
Betrifft: AW: Formen in UserForm Namen zuweisen per Makro
von: 1712501.html
Geschrieben am: 11.09.2019 16:25:11
Hallo,
im Prinzip, indem Du den Index mit übergibst, allerdings wird der Objektname + Index beim Erstellen über die .Add-Methode automatisch verwendet, wäre also nicht nötig:
Set NFrame = Me.Controls.Add("Forms.Frame.1", "Frame" & a)
Betrifft: AW: Formen in UserForm Namen zuweisen per Makro
von: 1712578.html
Set NFrame = Me.Controls.Add("Forms.Frame.1", "Frame" & a)
Die Idee mit "& a" bei der .add Methode habe ich bereits probiert.
Sub CommandButton1_Click()
If UserForm3.Frame1.CheckBox1 = True Then
Exit Sub
End If
End Sub
Nur wenn ich auf den CommandButton1 klicke, passiert nichts. Das Makro läuft nicht weiter bzw. greift nicht auf die Prozedur zu. Irgendwie stehe ich auf dem Schlauch und sehe den Fehler nicht.
Betrifft: AW: Formen in UserForm Namen zuweisen per Makro
von: 1712622.html
Geschrieben am: 12.09.2019 09:55:53
Hallo,
einem zur Laufzeit erstellten CommandButton kannst du nur über eine Klasse ein Makro zuweisen. Ich mach dir mal ein Beispiel:
https://www.herber.de/bbs/user/132002.xlsm
Gruß
Nepumuk
Betrifft: AW: Formen in UserForm Namen zuweisen per Makro
von: 1712688.html
Betrifft: AW: Formen in UserForm Namen zuweisen per Makro
von: 1712692.html
'Befehl zur Erstellung des Rahmens in welcher später die Checkbox (Kontrollkästchen) _
dargestellt werden
Set NFrame = Me.Controls.Add("Forms.Frame.1", Name:="Frame" & a)
'Definition der Position des Rahmens auf Basis der Variable a
With NFrame
.Height = 42
.Left = 42
.Top = 126 + b
.Width = 246
Sheet_Zahl = a
Call Sheet_Namen_uebergeben
With .Add("Forms.Checkbox.1", Name:="Checkbox" & a)
.Caption = " " & Sheet_Namen
.Font.Name = "Porsche Franklin Gothic"
.Font.Size = 18
.Height = 26
.Left = 6
.Top = 6
.Width = 224
End With
Hier erstelle ich den Rahmen und darin die Checkbox mit Bezug auf die Variable a die mit 1 beginnt. Aber bei der Abfrage, ob die Checkbox aktiviert ist oder nicht, bekomme ich immer eine Fehlermeldung. :(
Betrifft: AW: Formen in UserForm Namen zuweisen per Makro
von: 1712696.html
Geschrieben am: 12.09.2019 14:52:34
Hallo,
du musst, wie in meinem Beispiel, die Checkbox einer Objektvariablen zuweisen und diese dann an die Klassen übergeben.
Gruß
Nepumuk
Betrifft: AW: Formen in UserForm Namen zuweisen per Makro
von: 1712938.html
Betrifft: AW: Formen in UserForm Namen zuweisen per Makro
von: 1712942.html
Geschrieben am: 13.09.2019 15:04:52
Zusatz:
Was ich auch noch nicht ganz verstehe ich folgendes.
Für die CommandButtons ist das glaube ich klar.
Aber wenn ich eine Anzahl Checkboxen habe, die auch noch variieren kann, wie soll ich dann allen eine Objektvariable zuweisen und an die Klassen übergeben?
Betrifft: AW: Formen in UserForm Namen zuweisen per Makro
von: 1712960.html
Geschrieben am: 13.09.2019 15:46:14
Hallo,
du musst nur die Checkbox an die Klasse übergeben die beim Klick auf den Button abgefragt wird. So wie in meinem Beispiel.
Gruß
Nepumuk
Betrifft: AW: Formen in UserForm Namen zuweisen per Makro
von: 1713252.html
Private Sub mobjCommandButton_Click()
If Not CheckBox.Value Then MsgBox "Haben Sie alle Verteiler gewählt?"
End Sub
Wenn ich eine oder mehrere Checkbox(en) auswähle, kommt die gleiche Fehlermeldung.
Betrifft: AW: Formen in UserForm Namen zuweisen per Makro
von: 1713259.html
Geschrieben am: 16.09.2019 10:07:53
Hi Nepumuk,
ok, Fehler gefunden. Arbeite und teste weiter... :)
Grüße
Betrifft: AW: Formen in UserForm Namen zuweisen per Makro
von: 1713269.html
Private Sub mobjCommandButton_Click()
Dim cbox As Control
Dim a, c As Integer
If Not CheckBox.Value Then MsgBox "Bitte wählen Sie mindestens einen Verteiler."
End Sub
Somit müsste ich die Abfrage auch über den oben dargestellten Sub aufrufen. Sofern dies korrekt ist.
Betrifft: AW: Formen in UserForm Namen zuweisen per Makro
von: 1713303.html
Geschrieben am: 16.09.2019 14:08:03
Hi Nepumuk,
habe es jetzt zu 99% hinbekommen. Muss noch ein paar Kleinigkeiten ändern aber im Grunde läuft es. Den Rest sollte ich jetzt gelöst bekommen... hoffe ich...
Vielen Dank für die Hilfe und sollte es wider erwarten nicht klappen, melde ich mich noch einmal.
Grüße
Betrifft: AW: Formen in UserForm Namen zuweisen per Makro
von: 1712939.html
Geschrieben am: 13.09.2019 15:00:53
Hi Nepumuk,
bin mir nicht mal sicher, ob ich verstehe was Du programmiert hast. Somit kann ich dies leider nicht umsetzen. Mit Klassen hatte ich bisher nichts am Hut. Trotzdem danke ich Dir sehr für Deine Zeit und Mühe. Muss mich da richtig einarbeiten aber Stand jetzt verstehe ich es nicht.
Bin zwar den Code mehrfach durchgegangen um die Zusammenhänge zu verstehen und dennoch ist es verwirrend.
Entweder ich komm noch dahinter, oder ich suche mir eine andere Lösung. Bringt ja nichts etwas zu programmieren, was man nicht versteht.
Dennoch danke ich Dir.
Grüße