Portal | Forenübersicht | Neues Thema | Suchen | FAQ | Registrieren | Login
Forum > Excel & VBA > User-Projekte > Formular Inhalt ändern
Komplexe Projekte - gemeinsam erstellt!
In diesem Board befinden sich 69 Themen.
Die Beiträge bleiben immer erhalten.
Es wird moderiert von P@ulchen, RO_SCH.
Seite 1 Neues Thema letztes Thema nächstes Thema Dieses Board durchsuchen Diesen Thread zu meinen persönlichen Favoriten hinzufügen Abonnieren Ohne Zitat Antworten Druckt alle Antworten dieses Themas


ManniVBA ist offline ManniVBA  Formular Inhalt ändern Antworten Zitatantwort Einzelbeitrag drucken Dieses Thema weiterempfehlen
Profil private Nachricht senden Email
21.9.2013 - 20:26 Uhr
16 Posts
Stammgast


Hallo,

ich habe mit einer Userform dynamisch ein Formular erzeugt, welches ich nun nach dem es angezeigt wird, ändern will.

Momentan ist der "Datumsbereich" per Default mit einem Häckchen versehen - ist also ausgewählt. Bei Auswahl "Datumsbereich" werden alle Felder selelektiert/deselektiert.

Änderung bedeutet, dass bei der

1: Wegnahme eines Häckchens in der Checkbox die ganze Zeile inaktiv gesetzt wird - die beiden Datumsfelder zeigen das Datum zwar noch, sind aber nicht mehr beschreibbar.

2: Hinzufügen eines Häckchens in der Checkbox, die ganze Zeile wird aktiv gesetzt - die beiden Datumfelder sind überschreibbar.

Beim Befehl Bearbeitung werden nur die restlich ausgewählten Zeilen weiter benutzt.

MEIN PROBLEM BEI DER REALISIERUNG des Clickereignisse CommandButton1_Click ist, dass ich nicht den in der Sub UserForm_Initialize
erzeugten Schirm nicht richtig ansprechen und bearbeiten kann.
Besonders der Set chkBox = Me.Controls.Add("Forms.checkBox.1") bringt nicht das richtige Ergebnis. Welche andere Methoden als .Add kämen hier noch in Frage?
Hinweis:
Solange ich in der Sub intitialize bin kann ich jedes Feld ereichen und auch ändern.
Beispiel .BoundValue = True / False
Sobald die Initialisierung des Formulars beendet ist und komme mit dem Clickereignis in eine andere Sub-Routine wie CommandButton1_Click kann ich die Daten des Formulars nicht erreichen.
Wie könnte man das lösen? Ich hoffe ihr habt BITTE einen Vorschlag.

Hier mein Beispielcode (Fragment):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
 
 
Option Explicit
 
Private Sub CommandButton1_Click()
' Startparameter an UserForm übergeben
' Variablen deklarieren
Dim chkBox As MSForms.CheckBox
Dim txtBox As MSForms.TextBox
Dim lbl As MSForms.Label
 
Dim myRange As Variant
Dim Zähler As Integer
Dim myRows As Variant
Dim w As Long
Dim x As Long
Dim t, f As Integer
' Werte zuweisen, geändert von Zellen in einer Zeile in einen Range von Zeilen
x = 6                                                   ' Variable für Positionierung der ersten TextBox
w = 4
t = 0
f = 0
 
For Each myRows In myRange
    Set chkBox = Me.Controls.Add("Forms.checkBox.1")      ' TextBox zufügen
Next myRows
 
With CommandButton1
    Load UserForm1
    Debug.Print Caption & " " & .BoundValue
End With
 
myRows = Cells.SpecialCells(xlLastCell).Row             'letzte Zeile mit Inhalt ermitteln
' *** Zugriff auf aktuelles Formular, wie ändern?
End Sub
 
 
Private Sub CommandButton2_Click()
Dim vDatum As Date
Dim bDatum As Date
 
vDatum = Date
bDatum = Date
 
With CommandButton2
 
End With
MsgBox bDatum
 
End Sub
 
Private Sub CommandButton3_Click()
    Unload UserForm1
End Sub
 
Private Sub UserForm_Click()
UserForm_Initialize
End Sub
 
Private Sub UserForm_Initialize()
' Startparameter an UserForm übergeben
' Variablen deklarieren
Dim chkBox As MSForms.CheckBox
Dim txtBox As MSForms.TextBox
Dim lbl As MSForms.Label
 
Dim myRange As Variant
 
Dim myRows As Variant
Dim w As Long
Dim x As Long
 
' Werte zuweisen, geändert von Zellen in einer Zeile in einen Range von Zeilen
myRows = Cells.SpecialCells(xlLastCell).Row             'letzte Zeile mit Inhalt ermitteln
 
Set myRange = Range(Cells(1, 1), Cells(myRows, 1))
 
Height = myRows * 26 + 8                                ' Höhe des UserForm aus Anzahl der Objekte berechnen
Caption = "Konten auswählen"                            ' Titel festlegen
x = 6                                                   ' Variable für Positionierung der ersten TextBox
w = 4                                                   ' Variable für Positionierung der ersten Beschriftung
For Each myRows In myRange
    Set chkBox = Me.Controls.Add("Forms.checkBox.1")      ' TextBox zufügen
        With chkBox                                       ' Parameter für Textbox ...
            .Left = 10                                  ' ... Position linke Seite
            .Top = w                                    ' ... Oberkante
            .Width = 20                                 ' ... Breite
            ' *** Checkbox soll vorausgewählt sein ***
            .BoundValue = True                          ' Checkbox vorausgewählt
        End With                                        ' Ende Parameter übergeben
   
    Set lbl = Me.Controls.Add("Forms.Label.1")          ' Label zufügen
       With lbl                                         ' Parameter für Label ...
            .Caption = myRows.Value                     ' ... Text zuweisen
            .Font.Bold = True                           ' ... Schriftart = Fett
            .Left = 30                                  ' ... Position linke Seite
            .Top = x                                    ' ... Position Oberkante
            .Width = 230                                ' ... Breite
        End With                                        ' Ende Parameter übergeben
    x = x + 20                                          ' Variable für Oberkante hochzählen
 
    w = w + 20                                          ' Variable für Oberkante hochzählen                                         ' Variable für Oberkante hochzählen
Next myRows                                             ' Wendepunkt für Schleife
 
myRows = Cells.SpecialCells(xlLastCell).Row
Set myRange = Range(Cells(1, 2), Cells(myRows, 2))
x = 6                                                   ' Variable für Positionierung der ersten TextBox
w = 4                                                   ' Variable für Positionierung der ersten Beschriftung
For Each myRows In myRange
    Set txtBox = Me.Controls.Add("Forms.Textbox.1", "TB1", True)     ' TextBox "Datum von" zufügen
    With txtBox                                      ' Parameter für Textbox ...
        .Left = 220                                 ' ... Position linke Seite
        .Top = w                                    ' ... Oberkante
        .Width = 60                                 ' ... Breite
        .BoundValue = myRows.Value                  ' ... Text zuweisen
        .Font.Bold = True                           ' ... Schriftart = Fett
        .Name = "Textbox1"
    End With                                        ' Ende Parameter übergeben
    x = x + 20
 
    w = w + 20
Next myRows
 
myRows = Cells.SpecialCells(xlLastCell).Row
 
Set myRange = Range(Cells(1, 3), Cells(myRows, 3))
x = 6                                                   ' Variable für Positionierung der ersten TextBox
w = 4                                                   ' Variable für Positionierung der ersten Beschriftung
For Each myRows In myRange
    Set txtBox = Me.Controls.Add("Forms.Textbox.1", "TB2", True)     ' TextBox "Datum von" zufügen
    With txtBox                                      ' Parameter für Textbox ...
        .Left = 280                                 ' ... Position linke Seite
        .Top = w                                    ' ... Oberkante
        .Width = 60                                 ' ... Breite
        .BoundValue = myRows.Value                  ' ... Text zuweisen
        .Font.Bold = True                           ' ... Schriftart = Fett
        .Name = "Textbox1"
    End With                                        ' Ende Parameter übergeben
    x = x + 20
 
    w = w + 20
Next myRows
 
myRows = Cells.SpecialCells(xlLastCell).Row
 
With CommandButton1                                     ' Parameter an Schaltfläche 1 übergeben ...
    .Top = myRows * 20 + 18                             ' ... Punkt für Oberkante berechnen
    .Caption = "Datumsbereich?"                          ' ... Text eintragen
    .Font.Bold = True                                   ' ... Schriftart = Fett
    .ForeColor = &HFF0000                               ' ... Schriftfarbe = blau
    .Width = 100                                        ' ... Breite
    .Left = 10                                          ' ... Position linke Seite
End With                                                ' Ende Parameter übergeben
With CommandButton2                                     ' Parameter an Schaltfläche 2 übergeben ...
    .Top = myRows * 20 + 18                             ' ... Punkt für Oberkante berechnen
    .Caption = "Bearbeitung!"                           ' ... Text eintragen
    .Font.Bold = True                                   ' ... Schriftart = Fett
    .ForeColor = &HFF&                                  ' ... Schriftfarbe = rot
    .Left = 110                                         ' ... Position linke Seite
.Width = 100                                            ' ... Breite
End With                                                ' Ende Parameter übergeben
With CommandButton3                                     ' Parameter an Schaltfläche 3 übergeben ...
    .Top = myRows * 20 + 18                             ' ... Punkt für Oberkante berechnen
    .Caption = "Schließen"                              ' ... Text eintragen
    .Font.Bold = True                                   ' ... Schriftart = Fett
    .ForeColor = &HFF&                                  ' ... Schriftfarbe = rot
    .Left = 230                                         ' ... Position linke Seite
    .Width = 100                                        ' ... Breite
End With                                                ' Ende Parameter übergeben
 
End Sub                                                 ' Ende Makro
 
 


Die zum Aufbau des Formulars benutzten Testdaten sind:
Spalte A Spalte B Spalte C
1
2
3
4
5
6
7
8
9
10
11
12
13
 
[1113920476 DKB]        27.05.2007      10.06.2013
[2220117342 HYPO]       01.01.2008      13.09.2013
[3339302673 SPARDA]     16.06.2013      30.06.2013
[444799211132 VR K CONSORS]     16.09.2004      16.09.2013
[555700511136 TG K CONSORS]     16.09.2004      16.09.2013
[666327726300 POSTBANK] 30.03.2005      19.09.2013
[777620535346 VR M CONSORS]     16.09.2004      16.06.2013
[888623535346 TG M CONSORS]     16.09.2004      16.06.2013
[999BIS2006CK]  01.01.2002      10.08.2013
[AAABIS2006CM]  01.01.2002      27.07.2013
[BBBBAYER LANDESBANK MUENCHEN]  23.06.2011      16.06.2013
 

ManniVBA ist offline ManniVBA  Re: Formular Inhalt ändern Antworten Zitatantwort Einzelbeitrag drucken Dieses Thema weiterempfehlen
Profil private Nachricht senden Email
21.9.2013 - 20:28 Uhr
16 Posts
Stammgast


Das Hochladen der JPG -Datei, die den generierten Schirm zeigt ist mir leider nicht gelungen.


ManniVBA hat folgendes Bild angehängt:
(Anzeige des Bildes aufgrund der Grösse nicht möglich, bitte hier klicken um das Bild zu sehen)

ManniVBA ist offline ManniVBA  Re: Formular Inhalt ändern Antworten Zitatantwort Einzelbeitrag drucken Dieses Thema weiterempfehlen
Profil private Nachricht senden Email
21.9.2013 - 20:42 Uhr
16 Posts
Stammgast


Versuche nochmal das Formular zu laden. Zuletzt war die Datei zu groß.

ManniVBA hat folgendes Bild angehängt:
(Anzeige des Bildes aufgrund der Grösse nicht möglich, bitte hier klicken um das Bild zu sehen)

Seite 1 nach oben

Forenauswahl:





Numaek's Forum V4.1.0 © 2005 by numaek
Originaltemplate by numaek