Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Text aus Userform in Datei übertragen

Betrifft: Text aus Userform in Datei übertragen von: Ernst
Geschrieben am: 29.07.2008 15:41:00

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

  

Betrifft: AW: Text aus Userform in Datei übertragen von: otto
Geschrieben am: 29.07.2008 15:56:54

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


  

Betrifft: AW: Text aus Userform in Datei übertragen von: Ernst
Geschrieben am: 29.07.2008 18:54:07

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




 

Beiträge aus den Excel-Beispielen zum Thema "Text aus Userform in Datei übertragen"