Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

Tabelle über Listenfeld füllen

Betrifft: Tabelle über Listenfeld füllen von: Franz
Geschrieben am: 15.07.2008 09:57:11

Hallo zusammen,

über ein Listenfeld "lstvalues" in meinem Userform übernehme ich die selektierten Daten in meine Tabelle3,
funktioniert soweit. Wenn meinen Exceltabelle bzw. Userform geschlossen und neu geladen wird, und dann Einträge selektiert werden, dann werden bestehende Datenzeilen überschieben. Das darf nicht sein, es sollte nur in leere Zeilen die markierten Text übernommen werden. Wie muss ich den Code abändern das funktioniert.

Gruß Franz

Sub buttonübernahmeDatenTabelle3()

 Dim iRow As Integer, iCol As Integer, iZei As Integer
 iZei = 9 'ab Zeile 9 werden die Daten eingetragen
 For iRow = 0 To lstValues.ListCount - 1
    If lstValues.Selected(iRow) Then
       iZei = iZei + 1
       Tabelle3.Cells(iZei, 1).Value = Me.lstValues.List(iRow, 0)
       Tabelle3.Cells(iZei, 3).Value = Me.lstValues.List(iRow, 1)
    End If
 Next iRow

End Sub


  

Betrifft: AW: Tabelle über Listenfeld füllen von: David
Geschrieben am: 15.07.2008 10:03:40

bin zwar auch nicht so gut in VBA, aber so sollte das doch gehen, oder:

If Tabelle3.Cells(iZei, 1).Value = "" then Tabelle3.Cells(iZei, 1).Value = Me.lstValues.List(iRow, 0)



Gruß

David


  

Betrifft: AW: Tabelle über Listenfeld füllen von: Erich G.
Geschrieben am: 15.07.2008 11:27:20

Hallo Franz,
oder so:

'...
      iZei = iZei + 1
      With Tabelle3
         If IsEmpty(.Cells(iZei, 1)) Then .Cells(iZei, 1) = lstValues.List(iRow, 0)
         If IsEmpty(.Cells(iZei, 3)) Then .Cells(iZei, 3) = lstValues.List(iRow, 1)
      End With
   End If
'...

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Tabelle über Listenfeld füllen von: Franz
Geschrieben am: 15.07.2008 11:54:27

Hallo Erich,

vielen Dank für Deine Unterstützung. Wenn ich nachträglich im Listefeld keine Daten ändere oder noch keine Daten in der Tabelle 3 sind dann funktioniert der Code.
Aber wenn z.B. in Tabelle 3 schon 10 Einträge gemacht worden sind und ich das Listenfeld neu lade und dann nur 2 Zeilen selektiere dann wird der Text nicht in Tabelle 3
eingelesen. Im prinzip sollte auch wenn die Exceldatei geschlossen wird und das Userform mit dem Listenfeld neu geladen wird und dann nur ein Eintrag selectiert wird, dieser
in die nächste freie Zeile in Tabelle 3 eingelesen werden. Hast Du noch eine Idee?

Gruß Franz


  

Betrifft: AW: Tabelle über Listenfeld füllen von: Erich G.
Geschrieben am: 15.07.2008 13:45:50

Hi Franz,
dann probier mal das (ungetestet):

Sub buttonübernahmeDatenTabelle3()
   Dim iRow As Integer, iCol As Integer, iZei As Integer
   
   With Tabelle3
                                    'ab Zeile 10 werden die Daten eingetragen
      iZei = Application.Max(9, .Cells(.Rows.Count, 1).End(xlUp).Row)
      For iRow = 0 To lstValues.ListCount - 1
         If lstValues.Selected(iRow) Then
            iZei = iZei + 1
            .Cells(iZei, 1).Value = Me.lstValues.List(iRow, 0)
            .Cells(iZei, 3).Value = Me.lstValues.List(iRow, 1)
         End If
      Next iRow
   End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Tabelle über Listenfeld füllen von: Franz
Geschrieben am: 15.07.2008 14:01:13

Hallo Erich,

Danke ! Funkt!

Gruß Franz


 

Beiträge aus den Excel-Beispielen zum Thema "Tabelle über Listenfeld füllen"