Ich sollte in Formular mit folgenden Eigenschaften erstellen. Habt ihr irgendwelche Ideen, wie das in Excel am besten geht?
Formularform in Excel
- In Bereiche Eingeteilt
- Weitere Zeilen werden eingefügt, soferen die „letzte“ Zeile im Bereich angekreuzt wird
- Kreuzel, Name, Nummer Spalte
- Übertrag auf neue Tabelle
- Zeile soll wieder verschwinden, wenn Kreuz weggenommen wird (dynamisch/vor und rück)
Gibt es so ein Sondertool im Excel um solche Formulare zu erstellen oder muss das alleine mit Makros gelöst werden.
Wenn dies eurer Meinung nach nur mit einem Makro geschehen soll, wie kann ich dann Zeilen und Kontrollkästchehn durch Makro einfügen/einbleden und ebenfalls wieder ausblednen, sofern das Kreuzchen weggenommen wird?
ch habe ein sogenanntes Formular erstellt. Dies sieht folgendermassen aus: In Einer Userform sind auf einer Zeile ein Kontrollkästchen und 2 Textkasten. Die ersten drei Zeilen sind gegeben.
Wenn ich nun das Kontrollkästchen anclicke, erscheint eine neue Zeile welche genau wie die oberen aussehen. Soweit ist dies ja gut.
Hier das Makro dazu:
__________________________________________________ ______
Klassenmodul:
Option Explicit
Public WithEvents objCB As MSForms.CheckBox
Public WithEvents objTB As MSForms.TextBox
Private Sub objCB_Change()
Dim CB
If objCB = True Then
MsgBox objCB.Name
Call addcontrols
__________________________________________________ _______
__________________________________________________ _______
Modul 1 zur Userform:
Option Explicit
Dim myClass() As cls_EVENT
Public A As Integer
Public I As Integer
Public UF_Height As Long
Public dieErsten(1 To 3) As MSForms.Control 'CheckBox1, TextBox1, TextBox2
Public Sub machs()
Dim CT As MSForms.Control
Set CT = Nothing
Erase myClass()
I = 0
With UserForm1
Set dieErsten(1) = .CheckBox1
Set dieErsten(2) = .TextBox1
Set dieErsten(3) = .TextBox2
For Each CT In .Controls
If TypeOf CT Is MSForms.CheckBox Then
I = I + 1
ReDim Preserve myClass(1 To I)
Set myClass(I) = New cls_EVENT
Set myClass(I).objCB = CT
End If
Next
End With
End Sub
Public Sub addcontrols()
Dim ctTmp As MSForms.Control
With UserForm1
I = I + 1
Set ctTmp = .Controls.Add("Forms.CheckBox.1", "CB" & I, True)
With ctTmp
.Width = dieErsten(1).Width
.Left = dieErsten(1).Left
.Height = dieErsten(1).Height
.Top = (I - 1) * 30 + 18
ReDim Preserve myClass(1 To I)
Set myClass(I) = New cls_EVENT
Set myClass(I).objCB = ctTmp
End With
A = A + 1
Set ctTmp = .Controls.Add("Forms.TextBox.1", "TB" & A, True)
With ctTmp
.Width = dieErsten(2).Width
.Left = dieErsten(2).Left
.Height = dieErsten(2).Height
.Top = (I - 1) * 30 + 18
End With
A = A + 1
Set ctTmp = .Controls.Add("Forms.TextBox.1", "TB" & A, True)
With ctTmp
.Width = dieErsten(3).Width
.Left = dieErsten(3).Left
.Height = dieErsten(3).Height
.Top = (I - 1) * 30 + 18
End With
.Height = Application.Max((I - 1) * 30 + 60, UF_Height)
End With
End Sub
End If
End Sub
__________________________________________________ _______
Ich habe nun das Problem, dass ich, wenn ich im Formular die ersten zwei Häcklein anklicke noch keine neue Zeile eingefügt haben möchte. Erst beim Dritten Feld möchte ich, dass es mir die 4te Zeile infügt.
Kann mir da jemand helfen.
Zudem müsste ich dann auch noch die Textfelder (auch die die neu eingefügt werden) mit bestimmten Zeilen in meinem Excelsheet verknüpfen.
Ich hoffe dies alles ist irgendwie möglich. Ich weiss, das ich mir da eine ziemlich grosse Aufgabe aufgebrummt habe.
Gerne würde ich mein gesamte Excel-Datei Posten, was sehr viel verständlicher wäre. Wenn also jemand denkt mir helfen zu können, kann ich das Excelsheet gerne auch per e-mail senden.
Vielen Dank schon im Voraus.
Liebe Grüsse aus der Schweiz