Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1452to1456
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

Optimierung Datenübergabe UF an Sheet

Optimierung Datenübergabe UF an Sheet
14.10.2015 16:29:54
PQuest:-)
Hallo,
ich habe ein Userform mit ca. 20 Controls. Davon sind 16 Textfelder, die mit Datumsangaben ausgefüllt werden. Der Anfang von meinem Code sieht so aus und klappt auch:
Private Sub cmdSave_Click()
Dim lngLastRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Termine")
lngLastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
With ws
.Cells(lngLastRow + 1, 1) = cbID.Value
.Cells(lngLastRow + 1, 2) = txtName
.Cells(lngLastRow + 1, 3) = CDate(txtTV1.Value)
.Cells(lngLastRow + 1, 4) = CDate(txtSV.Value)
.Cells(lngLastRow + 1, 5) = CDate(txtIDV.Value)
End With
End Sub
Frage an die Optimierungsexperten:
Kann ich, und wenn ja wie, den Datenübertrag in die Tabelle so optimieren, dass ich nicht stupide 16 Zeilen von fast identischem Inhalt runtertippen muss?
Evtl. kommen später noch mehr Felder hinzu und dann wird die Befehlsliste unerträglich lang.
Sollten noch Infos benötigt werden kann ich sie bei Nachfrage liefern.
Danke,
PQuest:-)

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Optimierung Datenübergabe UF an Sheet
14.10.2015 16:35:05
selli
hallo pquest,
wird so eher schwierig, da die textfelder ja benannt werden müssen aus denen du die daten an die tabelle übergeben willst.
hier ist aber keine einheitliche struktur, die man in einer schleife durchzählen könnte, erkennbar.
evtl. über klassenmodule.
da kenne ich mich aber nicht aus und lasse die frage deshalb offen.
gruß
selli

AW: Optimierung Datenübergabe UF an Sheet
14.10.2015 16:45:02
PQuest:-)
Hallo,
ich hatte da als Idee zwei Arrays im Kopf
Array 1 für die Felder im UF
array1 (cbid,txtname,txttv1...
Array2 für die Spalten der Tabelle
array2 (1,2,3,4,5,6,...
Und das ganz dann irgendwie in einer For Next Schleife zusammenbringen.
Leider weiss ich nicht, wie ich das codemäßig umsetzen kann.
Gruß,
PQuest:-)

Anzeige
gelöst
14.10.2015 21:37:21
PQuest:-)

Private Sub cmdSave_Click()
Dim lngLastRow As Long
Dim bytLastCol As Byte
Dim ws As Worksheet
Dim UF As UserForm
Dim vntCtrl As Variant
Set UF = ufShedule
Set ws = Worksheets("ListOfPatients")
lngLastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
bytLastCol = ws.Cells(1, Columns.Count).End(xlToLeft).Column
vntCtrl = Array("txtSV", "txtIDV", "txtTV1", "txtTV2", "txtTV3", "txtTV4", "txtTV5", "txtDCV", " _
txtSCV14", _
"txtSCV28", "txtSCV42", "txtSCV56", "txtFUS1", "txtFUS3", "txtFUS7", "txtFUS10") _
With ws
.Cells(lngLastRow + 1, 1) = cbPatID.Value
.Cells(lngLastRow + 1, 2) = txtPatName
.Cells(lngLastRow + 1, 3) = "Agegroup?"
End With
For i = 4 To bytLastCol
With ws
If Controls(vntCtrl(i - 4)) = "" Then
.Cells(lngLastRow + 1, i) = ""
Else
.Cells(lngLastRow + 1, i) = CDate(Controls(vntCtrl(i - 4)).Value)
End If
End With
Next
End Sub

So geht's!
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige