Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
996to1000
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

Text aus Userform in Datei übertragen

Text aus Userform in Datei übertragen
29.07.2008 15:41:00
Ernst
Hi
aus einer Userform muss ich Daten aus 3 CboBoxen, 1 Listbox, die sich aus dem Text von drei nebeneinander stehenden Spalten zusammensetzt und aus einer TextBox als ein Datensatz in eine Datei übertragen.
Im Laufe eines Monats sind es bis zu 80 Datensätze ich da übernehmen muss. Das Problem ist nur, wie ich in VBA diese Datensätze schön untereinander in das als Datenspeicher dienende Arbeitsblatt übertragen kann. Bei jedem neuen Datensatz muss ja berücksichtigt werden, dass der neue Datensatz immer eine Zeile tiefer eingetragen werden muss.
Bei der Übernahme des Textes über die Listbox in ein Arbeitsblatt gibt es auch ein Problem. Der Text aus 3 direkt nebeneinander liegenden Spalten muss in der Userform als ein Satz gezeigt werden. In der Formatierung der Userform habe ich das wie folgt gelöst:
With UserForm5.ListBox1
.ColumnCount = 3
.ColumnHeads = False
.RowSource = "Favoriten!A6:C40"
.ColumnWidths = "2,5cm;2,5cm;2,5cm"
End With~f~
Leider klappt die Übernahme nicht immer. Es kann aber auch an der Übernahme "Listbox-Arbeitsblatt" liegen, wo mein Prg.Text wie folgt aussieht:
~f~With Worksheets(c_wsBerichtName)
.Cells(1, 4).Value = Me.CboMitarbeiter <ist OK
.Cells(4, 5).Value = CboBoxStd.Value * 1 <ist OK
.Cells(4, 6).Value = Me.CboBoxDat.Value <ist OK
.Cells(4, 4).Value = TextBox1.Text <ist OK
.Cells(4, 1).Value = ListBox1.List(ListBox1.ListIndex, 0) ?
.Cells(4, 2).Value = ListBox1.List(ListBox1.ListIndex, 1) ?
.Cells(4, 3).Value = ListBox1.List(ListBox1.ListIndex, 2) ?
End With
Ich hoffe, dass mir jemand helfen kann.
Frdl. Gruß Laguna

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text aus Userform in Datei übertragen
29.07.2008 15:56:54
otto
Hi,
den Listbox1.listindex musst du erst mal ermitteln, z.B. so:
Dim intindex As Integer
For intindex = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(intindex) = True Then
With Worksheets(c_wsBerichtName)
.Cells(1, 4).Value = Me.CboMitarbeiter
.Cells(4, 5).Value = CboBoxStd.Value * 1
.Cells(4, 6).Value = Me.CboBoxDat.Value
.Cells(4, 4).Value = TextBox1.Text <ist OK
.Cells(4, 1).Value = ListBox1.List(intindex, 0)
.Cells(4, 2).Value = ListBox1.List(intindex, 1)
.Cells(4, 3).Value = ListBox1.List(intindex, 2)
End With
End If
Next intindex
Gruß
otto

Anzeige
AW: Text aus Userform in Datei übertragen
29.07.2008 18:54:00
Ernst
Hi
ich hatte es fast erwartet. Meine Beschreibung hat Dich teilweise in die Irre geleitet.
Es gibt eine Auftrags-Liste. Dort stehen - aufgeteilt in drei Spalten - die Auftrags-Details - dies ist ein separates Arbeitsblatt.
Die Aufträge müssen so aufgeteilt beschrieben sein, weil es versch. Dinge sind. Mal sehr einfach gesagt, wie folgt: 1.Spalte = Auto; 2.Spalte = Motor; 3.Spalte = Zylinder
In dieser ungefähren Art stehen in der Auftrags-Liste ca. 15 bis 20 Aufträge. Der Mitarbeiter will jetzt seine durchgeführte Arbeit beschreiben und bewerten.
In einer separaten Userform sucht er zuerst seinen Namen, dann der betref. Arbeitstag und die geleisteten Arbeitsstunden. Dann muss er den Auftrag benennen. Dafür ruft er in der Userform die Auftragsliste auf, die ihm in der ListBox mit dem Text der drei nebeneinander stehenden Spalten angeboten wird. Er sucht die richtige Bezeichnung aus und klickt das letzte Feld an = TextBox, wo wichtige Hinweise oder Infos eingetragen werden.
Dann drückt er auf OK und die eben aufgenommenen Daten werden in ein separates als Datenspeicher fungierendes Arbeitsblatt übertragen. Dort müssen die drei Wortteile des Auftrages wieder schön separat in drei Spalten stehen.
Bei dieser Übertragung ist es wichtig, dass jeder neue Datensatz in eine neuen Zeile eingetragen wird.
In diesem Arbeitsblatt bleiben die Auftrags-Details bis Ende des Monats stehen. Dann wird eine Zusammenfassung erstellt und abgespeichert. Dann geht's mit dem neuen Monat wieder von vorne los.
Der Teil des Codes habe ich mit Deinen Zusätzen zwar versucht zu korrigieren, aber das ist ja so nicht richtig.
Kannst Du mir da noch etwas helfen.
Schon mal vielen Dank - Gruß Ernst

Private Sub btnOK_Click()
Dim intindex As Integer
Const c_wsBerichtName = "Details"
Rem For intindex = 0 To ListBox1.ListCount - 1
Rem If ListBox1.Selected(intindex) = True Then
With Worksheets(c_wsBerichtName)
.Cells(1, 4).Value = Me.CboMitarbeiter
.Cells(4, 5).Value = CboBoxStd.Value * 1
.Cells(4, 6).Value = Me.CboBoxDat.Value
.Cells(4, 4).Value = TextBox1.Text
.Cells(4, 1).Value = ListBox1.List(intindex, 0)
.Cells(4, 2).Value = ListBox1.List(intindex, 1)
.Cells(4, 3).Value = ListBox1.List(intindex, 2)
End With
Rem End If
Rem Next intindex
Unload Me
End Sub


Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige