Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1640to1644
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
Inhaltsverzeichnis

VBA Fromular mit ExcelDaten dynamisch füllen

VBA Fromular mit ExcelDaten dynamisch füllen
06.09.2018 17:24:23
G.
Hallo, ich habe folgende userform erfolgreich gebaut:

Private Sub UserForm_Initialize()
'Dropdown Listen füllen
Priorität.List = Sheets("DropDown").Range("A2:A6").Value
Kunde.List = Sheets("DropDown").Range("E2:E10").Value
Bereich.List = Sheets("DropDown").Range("F2:F7").Value
'DatePicker aktualisieren
erfasstam.Value = Date
fälligzum.Value = Date
'Uhrzeit von 8 - 17:30 erzeugen
Dim i As Integer
Dim ViertelStund As Double
Dim Uhrzeit As Double
Dim arrUhr(0 To 41, 1 To 1) As Variant
'00:00 wird hier "von Hand" in den ersten Satz geschrieben
arrUhr(0, 1) = Format(0, "hh:mm")
'selbsterklärend
ViertelStund = 15 / (24 * 60)
'StartZeit
Uhrzeit = 8 / 24
'Beginnend ab 08:00, in 15min Schritten bis 18:00
For i = 1 To 39
arrUhr(i, 1) = Format(Uhrzeit, "hh:mm")
Uhrzeit = Uhrzeit + ViertelStund
Next i
'das Ganze noch in die Combobox kopieren
UserForm2.Zeitvon.List = arrUhr
UserForm2.Zeitbis.List = arrUhr
End Sub
Private Sub Daten_übernehmen_Click()
'Variable deklarieren
Dim letzte_Zeile As Long
'Die letzte beschrieben Zeile in Spalte B ermitteln
Sheets("ToDo").Activate
'letzte_Zeile = Range("B65536").End(xlUp).Offset(1, 0).Row
letzte_Zeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
'MsgBox letztezeile
'lfd nr. erhöhen'
Cells(letzte_Zeile + 1, 1) = Cells(letzte_Zeile, 1) + 1
'Eintrag aus TextBox1 (erfasst am) in erste freie Zelle übertragen
Cells(letzte_Zeile, 2) = erfasstam
Cells(letzte_Zeile, 2).NumberFormat = "dd/mm/yyyy"
'Selection.NumberFormat = "dd/mm/yyyy"
'Eintrag aus TextBox2 (erfasst von) in erste freie Zelle  übertragen
Cells(letzte_Zeile, 3) = erfasstvon
'Eintrag aus TextBox3 (Kunde) in erste freie Zelle  übertragen
Cells(letzte_Zeile, 4) = Kunde
'Eintrag aus TextBox3 (Beschreibung) in erste freie Zelle  übertragen
Cells(letzte_Zeile, 5) = Beschreibung
'Eintrag aus TextBox3 (Bereich) in erste freie Zelle  übertragen
Cells(letzte_Zeile, 6) = Bereich
'Eintrag aus TextBox4 (fällig am) in erste freie Zelle  übertragen
Cells(letzte_Zeile, 7) = fälligzum
'Eintrag aus TextBox5 (Priorität) in erste freie Zelle  übertragen
Cells(letzte_Zeile, 8) = Priorität
'Eintrag aus TextBox6 (Zeit von) in erste freie Zelle  übertragen
Cells(letzte_Zeile, 9) = Zeitvon
'Eintrag aus TextBox7 (Zeit bis) in erste freie Zelle  übertragen
Cells(letzte_Zeile, 10) = Zeitbis
'Eintrag aus TextBox8 (Bearbeiter) in erste freie Zelle  übertragen
With Cells(letzte_Zeile, 11).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=DropDown!$B$2:$B$5"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
'Eintrag aus TextBox8 (Status) in erste freie Zelle  übertragen
With Cells(letzte_Zeile, 12).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=DropDown!$C$2:$C$7"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
'Eintrag aus TextBox8 (Fertig) in erste freie Zelle  übertragen
With Cells(letzte_Zeile, 13).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=DropDown!$D$2:$D$6"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
'Eintrag aus TextBox8 (Lösungen) in erste freie Zelle  übertragen
Cells(letzte_Zeile, 14) = Lösung
'Die Sendkey Anweisung ersetzt das händische Betätigen der
'Tabtaste
SendKeys "{TAB}"
'Die Sendkey Anweisung ersetzt das händische Betätigen der
'Tabtaste
SendKeys "{TAB}"
End Sub
Private Sub Eingabe_beenden_Click()
'UserForm schließen
Unload UserForm2
Sheets("Start").Activate
End Sub

Private Sub UserForm2_QueryClose(Cancel As Integer, CloseMode As Integer)
'Fehlermeldung, wenn versucht wird, die UserForm über das rote
'Schließenkreuz oben rechts zu schließen
If CloseMode = 0 Then
Cancel = 1
MsgBox "Bitte verlassen Sie das Dialogfeld mit den Schaltflächen.", _
vbOKOnly + vbInformation, "Bitte Schaltfläche betätigen."
End If
End Sub

das läuft auch gut. nun möchte ich aber formular haben, das sich mit den erfassten Daten von der Tabelle, entsprechend der Anzahl vorhandener Einträge füllt.
Vielen Dank schon mal im voraus

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Fromular mit ExcelDaten dynamisch füllen
09.09.2018 10:29:23
Matthias
Moin!
Du müsstest deinen Wunsch mal noch ein wenig präzisieren. Mit "formular haben" kann man nicht viel anfangen. Meinst du damit deine Dropdownlisten (= Combobox?) oder eine Listbox oder gibt es das Element auf deiner Userform noch nicht?
VG
AW: VBA Fromular mit ExcelDaten dynamisch füllen
10.09.2018 08:28:37
Gerd
Hallo,es ist ja momentan so, das ich mit dem userform nur Daten übergeben kann. Ich möchte nun eine dynamisch wachsende userform haben, das die Daten aus der Exceltabelle einliest. Sollte das gehen, auch eine Bearbeitung zulässt.
AW: VBA Fromular mit ExcelDaten dynamisch füllen
10.09.2018 13:55:28
Matthias
Moin!
Also wenn du Daten aus einem Blatt angezeigt haben willst, dann füge in deine UF eine Listbox ein. Die kannst du beim Initialisieren oder anderen Events (bspw. Daten einfügen) neu Laden. Für die Daten kannst du entweder direkt Bezug auf eine Range nehmen oder auch individuell Daten einlesen.
Ohne Datei oder genaue Frage / Problem kann man da jetzt aber nicht viel helfen.
VG
Anzeige
AW: VBA Fromular mit ExcelDaten dynamisch füllen
10.09.2018 14:36:38
Gerd
Hallo, leider ist die Datei zu groß zum hochladen. Es gibt aber ein Screenschut: Userbild
Ich befülle mit der Userform 15 Zellen pro Zeile, die ich gerne wieder in eine userform einlesen möchte. Wie sieht hierfür das VB-Script aus? Zum schreiben in die Zellen benutze ich fogendes:
Private Sub UserForm_Initialize()
'Dropdown Listen füllen
Priorität.List = Sheets("DropDown").Range("A2:A6").Value
Kunde.List = Sheets("DropDown").Range("E2:E20").Value
Bereich.List = Sheets("DropDown").Range("F2:F7").Value
'DatePicker aktualisieren
erfasstam.Value = Date
fälligzum.Value = Date
'Uhrzeit von 8 - 17:30 erzeugen
Dim i As Integer
Dim ViertelStund As Double
Dim Uhrzeit As Double
Dim arrUhr(0 To 40, 1 To 1) As Variant
'00:00 wird hier "von Hand" in den ersten Satz geschrieben
arrUhr(0, 1) = Format(0, "hh:mm")
'selbsterklärend
ViertelStund = 15 / (24 * 60)
'StartZeit
Uhrzeit = 8 / 24
'Beginnend ab 08:00, in 15min Schritten bis 18:00
For i = 1 To 40
arrUhr(i, 1) = Format(Uhrzeit, "hh:mm")
Uhrzeit = Uhrzeit + ViertelStund
Next i
'das Ganze noch in die Combobox kopieren
UserForm2.Zeitvon.List = arrUhr
UserForm2.Zeitbis.List = arrUhr
End Sub

Private Sub Daten_übernehmen_Click()
'Variable deklarieren
Dim letzte_Zeile As Long
'Die letzte beschrieben Zeile in Spalte B ermitteln
Sheets("ToDo").Activate
'letzte_Zeile = Range("B65536").End(xlUp).Offset(1, 0).Row
letzte_Zeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
'MsgBox letztezeile
'lfd nr. erhöhen'
Cells(letzte_Zeile + 1, 1) = Cells(letzte_Zeile, 1) + 1
'Eintrag aus TextBox1 (erfasst am) in erste freie Zelle übertragen
Cells(letzte_Zeile, 2) = erfasstam
Cells(letzte_Zeile, 2).NumberFormat = "dd/mm/yyyy"
'Selection.NumberFormat = "dd/mm/yyyy"
'Eintrag aus TextBox2 (erfasst von) in erste freie Zelle  übertragen
Cells(letzte_Zeile, 3) = erfasstvon
'Eintrag aus TextBox3 (Kunde) in erste freie Zelle  übertragen
Cells(letzte_Zeile, 4) = Kunde
'Eintrag aus TextBox3 (Beschreibung) in erste freie Zelle  übertragen
Cells(letzte_Zeile, 5) = Beschreibung
'Eintrag aus TextBox3 (Bereich) in erste freie Zelle  übertragen
Cells(letzte_Zeile, 6) = Bereich
'Eintrag aus TextBox4 (fällig am) in erste freie Zelle  übertragen
Cells(letzte_Zeile, 7) = fälligzum
'Eintrag aus TextBox5 (Priorität) in erste freie Zelle  übertragen
Cells(letzte_Zeile, 8) = Priorität
'Eintrag aus TextBox6 (Zeit von) in erste freie Zelle  übertragen
Cells(letzte_Zeile, 9) = Zeitvon
'Eintrag aus TextBox7 (Zeit bis) in erste freie Zelle  übertragen
Cells(letzte_Zeile, 10) = Zeitbis
'Eintrag aus TextBox8 (Bearbeiter) in erste freie Zelle  übertragen
With Cells(letzte_Zeile, 11).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=DropDown!$B$2:$B$5"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
'Eintrag aus TextBox8 (Status) in erste freie Zelle  übertragen
With Cells(letzte_Zeile, 12).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=DropDown!$C$2:$C$7"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
'Eintrag aus TextBox8 (Fertig) in erste freie Zelle  übertragen
With Cells(letzte_Zeile, 13).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=DropDown!$D$2:$D$6"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
'Eintrag aus TextBox8 (Lösungen) in erste freie Zelle  übertragen
Cells(letzte_Zeile, 15) = Lösung
'Die Sendkey Anweisung ersetzt das händische Betätigen der
'Tabtaste
SendKeys "{TAB}"
'Die Sendkey Anweisung ersetzt das händische Betätigen der
'Tabtaste
SendKeys "{TAB}"
End Sub

Private Sub Eingabe_beenden_Click()
'UserForm schließen
Unload UserForm2
Sheets("Start").Activate
End Sub
Private Sub UserForm2_QueryClose(Cancel As Integer, CloseMode As Integer)
'Fehlermeldung, wenn versucht wird, die UserForm über das rote
'Schließenkreuz oben rechts zu schließen
If CloseMode = 0 Then
Cancel = 1
MsgBox "Bitte verlassen Sie das Dialogfeld mit den Schaltflächen.", _
vbOKOnly + vbInformation, "Bitte Schaltfläche betätigen."
End If
End Sub
Wie würde das Script aussehen, wenn ich die damit ausgefüllten Zellen wieder in die Userform einlesen
wollte und ggf. Änderungen an der einen oder anderen Zelle vornehmen möchte.
Ist das jetzt genau genug ?
Anzeige
AW: VBA Fromular mit ExcelDaten dynamisch füllen
10.09.2018 22:07:28
Matthias
Moin!
Na zumindest ein paar Informationen sind schon da. :-) Ich vermute mal, dass du die Daten wieder in die Textboxen laden willst. Was noch fraglich ist, wann bzw. wie das ausgelöst werden soll und woher der Code weiß, welche Zeile er laden soll? Habe jetzt mal die selektierte Zeile genommen. Dann könnte der Code so aussehen. Ist aber ungetestet. Damit sollten deine Textboxen (deren Name ist aus deinem Code) wieder eingelsen werden. Den Code einer SChaltfläche zum Einlesen oder einem Ereignis zuweisen.
Sub neuklcik()
Dim elemente
Dim blattpos
Dim zeile As Long
Dim i As Long
elemente = Array("erfasstam", "erfasstvon", "Kunde", "Beschreibung", "Bereich", "fälligzum", " _
Priorität", "Zeitvon", "Zeitbis", "Lösung")
blattpos = Array(2, 3, 4, 5, 6, 7, 8, 9, 10, 15)
zeile = Selection.Row
If zeile = 1 Then zeile = 2
For i = 0 To UBound(blattpos)
Me.Controls(elemente(i)) = Cells(zeile, blattpos(i))
Next
End Sub

VG
Anzeige
AW: VBA Fromular mit ExcelDaten dynamisch füllen
11.09.2018 08:34:27
Gerd
Hallo, genau das ist ja auch mein hauptsächliches Problem das "woher der Code weiß, welche Zeile er laden soll". Man muß wohl mit Schleifen Arbeiten, also ermitteln in wieviel Zeilen Daten stehen und dann entsprechend in der Userform Zeile für Zeile erstellen und füllen. Aber wie man soetwas Programmiert: Keine Ahnung!
AW: VBA Fromular mit ExcelDaten dynamisch füllen
11.09.2018 20:38:28
Matthias
Moin!
Aber das mit dem Einfügen musst du doch wissen. Willst du den letzten Eintrag oder einen x-beliebigen. Am Besten wäre es mal, du lädst eine Datei hoch und erklärst an Hand der UF dein Vorgehen bzw. wie es beabsichtigt ist. Ich habe das so verstanden.
Du hast Textboxen und befüllst die. Dann drückst du auf einen Button und die Daten werden in die erste freie Zeile am Ende deiner Tabelle eingetragen. Zu dem Zeitpunkt sind jetzt noch alle Textboxen gefüllt. Jetzt fehlt der Teil, was dann passieren soll. Das mal bitte beschreiben - Ablauf nach welchen Kriterien etc..
Kann auch sein, dass ich auf dem Schlauch stehe. Lasse deshalb mal die Frage offen.
VG
Anzeige
AW: VBA Fromular mit ExcelDaten dynamisch füllen
12.09.2018 08:12:58
Gerd
Moin, mittlerweile habe ich hinbekommen. Danke für die Hilfe.

42 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige