Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1632to1636
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
ControlSource für mehrere Textboxen
24.07.2018 10:24:47
Philip
Hallo zusammen
Ich habe eine Userform auf der ich ca. 700 TextBoxen habe. Nun möchte ich den Inhalt der TextBoxen auf eine Hilfstabelle kopieren mit ControlSource damit ich die Werte immer in den TextBoxen habe und auch die Userform schliessen kann.
Ist es möglich die ControlSource Funktion für alle TextBoxen zu setzen ohne jede einzeln auszuwählen?
Ein Beispiel der Userform:
https://www.herber.de/bbs/user/122845.xlsm
Gruss

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ControlSource für mehrere Textboxen
24.07.2018 13:19:23
fcs
Hallo Philip,
die ControlSource per VBA zu setzen is theoretisch im Editiermodus des Userforms möglich.
Da hab ich aber keine aktuellen Erfahrungen.
Es ist meiner Meinung nach einfacher, die Textbox-Namen und deren Werte beim Beenden des Userforms oder auf andere Anweisung ins Tabellenblatt zu schreiben.
Beim Aktivieren/Laden des Userforms werden die Daten dann in die Textboxen eingelesen.
Gruß
Franz
'Diese beiden Makros im Userform-Code ergänzen
Private Sub UserForm_Activate()
Dim wksHT As Worksheet
Dim Zeile As Long
Dim objControl As Object
'Werte aus Hilfstabelle in Textboxen einlesen
Set wksHT = ThisWorkbook.Worksheets("HT")     'Name ggf. anpasen
On Error Resume Next
With wksHT
For Zeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(Zeile, 1).Text = "" Then Exit Sub 'noch keine Daten in Hilfstabelle
Me.Controls(.Cells(Zeile, 1).Text).Object.Value = .Cells(Zeile, 2)
Next
End With
End Sub
Private Sub UserForm_Terminate()
'Werte aus Textboxen in Hilfstabelle schreiben
Dim wksHT As Worksheet
Dim Zeile As Long
Dim objControl As Object
Dim objMP As MSForms.Page
Set wksHT = ThisWorkbook.Worksheets("HT")     'Name ggf. anpasen
With wksHT
.Range("A:E").Clear
Zeile = 1
.Cells(Zeile, 1) = "Name Textbox"
.Cells(Zeile, 2) = "Wert/Text"
.Cells(Zeile, 1) = "Parent-Element"
.Cells(Zeile, 1) = "Position Open"
.Cells(Zeile, 1) = "Position Links"
.Columns(2).NumberFormat = "@"
For Each objControl In Me.Controls
If LCase(TypeName(objControl)) = "textbox" Then
Zeile = Zeile + 1
.Cells(Zeile, 1) = objControl.Name
.Cells(Zeile, 2) = objControl.Object.Value
.Cells(Zeile, 3) = objControl.Parent.Name
.Cells(Zeile, 4) = objControl.Top
.Cells(Zeile, 5) = objControl.Left
End If
Next objControl
.Range("A:D").EntireColumn.AutoFit
End With
End Sub

Anzeige
AW: ControlSource für mehrere Textboxen
24.07.2018 13:45:50
Philip
Hallo Franz
Danke dir für deinen Code, ist es möglich den Code so abzuändern dass nur die TextBoxen die einen Wert beinhalten auf die Hilfstabelle geschrieben werden da es sonst ein bisschen lange geht.
Ich habe es noch mit diesem Code versucht er macht eigentlich das was ich wollte nur eben nicht immer und wenn die Hilfstabelle nicht aktiv ist schreibt er mir den Text aus den TextBoxen auf die anderen Tabellenblätter. Evt. kannst du dir diesen Code mal anschauen.
Private Sub UserForm_Initialize()
Dim Zeile, spalte As Integer
Dim mytb As Control
spalte = 13
Zeile = 1
For Each mytb In Controls
If Left(mytb.Name, 5) = "TextB" Then
mytb.ControlSource = Sheets("Tabelle2").Cells(Zeile, spalte).Address 'Verkn?pfen
mytb.Value = Sheets("Tabelle2").Cells(1, 13)  'Wert von anderer Zelle einlesen
Zeile = Zeile + 1
Else
End If
Next
End Sub

Gruss Philip
Anzeige
AW: ControlSource für mehrere Textboxen
24.07.2018 14:13:57
Nepumuk
Hallo Philip,
teste mal:
Private Sub UserForm_Initialize()
    
    Dim Zeile As Long, Spalte As Long
    Dim mytb As Control
    Spalte = 13
    Zeile = 1
    
    For Each mytb In Controls
        If Left(mytb.Name, 5) = "TextB" Then
            mytb.ControlSource = Sheets("Tabelle2").Cells(Zeile, Spalte).Address(External:=True) 'Verkn?pfen
            mytb.Value = Sheets("Tabelle2").Cells(1, 13) 'Wert von anderer Zelle einlesen
            Zeile = Zeile + 1
        End If
    Next
End Sub

Gruß
Nepumuk
Anzeige
AW: ControlSource für mehrere Textboxen
24.07.2018 14:32:40
Philip
Hallo Nepumuk
Mit dieser kleiner Änderung werden mir die Werte in die richtige Tabelle geschrieben, jedoch wird immer ein Eintrag überschrieben.
Wenn TextBox1 wert 123 text2/456 text3/789 ist beim nächsten mal öffnen text1/123 text2/123 text3/789
Gruss Philip
AW: ControlSource für mehrere Textboxen
24.07.2018 14:56:13
Nepumuk
Hallo Philip,
lass die Zeile:
mytb.Value = Sheets("Tabelle2").Cells(1, 13)
weg, denn durch das setzen der ControlSource-Eigenschaft übernimmt die TextBox automatisch den Wert aus der Zelle.
Gruß
Nepumuk
AW: ControlSource für mehrere Textboxen
25.07.2018 10:18:13
fcs
Hallo Philip,
nachfogend dein Makro korrigiert und meines angepasst, so dass nur noch die Textboxen mit Werten in der Hilfstabelle gelistet werden.
Zusätzlich wird die Bildschirm-Aktualisierung vorrübergehed deaktiviert, was Makros auch beschleunigt.
Gruß
Franz
Dein Makro angepasst
Private Sub UserForm_Initialize()
Dim Zeile, spalte As Integer
Dim mytb As Control
spalte = 13
Zeile = 1
With ThisWorkbook.Sheets("Tabelle2") 'Name ggf. anpassen
For Each mytb In Me.Controls
If LCase(TypeName(mytb)) = "textbox" Then 'so werden auch Textboxen erfasst mit _
anderen Namen erfasst
mytb.ControlSource = "'" & .Name & "'!" & .Cells(Zeile, spalte).Address 'Verkn?pfen
Zeile = Zeile + 1
End If
Next
End With
End Sub
Meine Makros angepasst
'Diese beiden Makros im Userform-Code ergänzen
Private Sub UserForm_Activate()
Dim wksHT As Worksheet
Dim Zeile As Long
Dim objControl As Object
'Werte aus Hilfstabelle in Textboxen einlesen
Set wksHT = ThisWorkbook.Worksheets("Tabelle2")     'Name ggf. anpasen
On Error Resume Next
With wksHT
For Zeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(Zeile, 1).Text = "" Then Exit Sub 'noch keine Daten in Hilfstabelle
Me.Controls(.Cells(Zeile, 1).Text).Object.Value = .Cells(Zeile, 2)
Next
End With
End Sub
Private Sub UserForm_Terminate()
'Werte aus Textboxen in Hilfstabelle schreiben
Dim wksHT As Worksheet
Dim Zeile As Long
Dim objControl As Object
Set wksHT = ThisWorkbook.Worksheets("Tabelle2")     'Name ggf. anpasen
Application.ScreenUpdating = False
With wksHT
.Range("A:E").Clear
Zeile = 1
.Cells(Zeile, 1) = "Name Textbox"
.Cells(Zeile, 2) = "Wert/Text"
.Cells(Zeile, 3) = "Parent-Element"
.Cells(Zeile, 4) = "Position Open"
.Cells(Zeile, 5) = "Position Links"
.Columns(2).NumberFormat = "@"
For Each objControl In Me.Controls
If LCase(TypeName(objControl)) = "textbox" Then
If objControl.Object.Value  "" Then
Zeile = Zeile + 1
.Cells(Zeile, 1) = objControl.Name
.Cells(Zeile, 2) = objControl.Object.Value
.Cells(Zeile, 3) = objControl.Parent.Name
.Cells(Zeile, 4) = objControl.Top
.Cells(Zeile, 5) = objControl.Left
End If
End If
Next objControl
.Range("A:D").EntireColumn.AutoFit
End With
Application.ScreenUpdating = True
End Sub

Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige