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

Datenübernahme aus Listbox

Datenübernahme aus Listbox
08.10.2021 09:11:07
Norman
Hallo! Mit viel Interesse habe ich hier schon so einiges hilfreiches gelesen.
Ich habe eine Excel-VBA Datei erstellt um mir den Büroalltag etwas zu erleichtern und weg vom Papier zu kommen. Leider komme ich aber in zwei Punkten in meiner Datei nicht weiter und hoffe es kann mir jemand dabei behilflich sein das Problem zu lösen.
Wenn ich in meiner Datei (s. unten) auf Lohnmonat gehe soll es so sein, dass wenn ich den Monat und das Jahr ausgewählt habe und auf "Monat Anlegen" klicke für alle in der Listbox befindlichen Mandanten einen Datensatz anlegt. Bislang muss ich jeden einzelnen Listboxeintrag anklicken und dann auf "Monat Anlegen" klicken.
Meine zweite Herausforderung ist, dass ich gerne in der Listbox in der UserForm "Lohn bearbeiten" nur Einträge angezeigt bekommen möchte, die nicht den Haken bei der Checkbox "Vorgang Erledigt" aktiviert haben.
Ich bin wahrlich kein Profi und habe mir bis jetzt halbwegs selbst behilflich sein können und würde mich freuen wenn mir hier der ein oder andere neuen Input geben könnte wie ich oben genannte Punkte angehen könnte.
Vorab schon mal vielen lieben Dank!
https://www.herber.de/bbs/user/148502.xlsm

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

Betreff
Datum
Anwender
Anzeige
AW: Datenübernahme aus Listbox
08.10.2021 11:43:49
Alwin
Hallo Norman,
Ändere die Userform so:
Option Explicit

Private Sub CommandButton1_Click()
WerteLb1Schreiben
End Sub

Private Sub CommandButton2_Click()
Unload Me
Sheets("Main").Select
End Sub

Private Sub LB1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
With LB1
TBMdt = .List(.ListIndex, 0)
TBName = .List(.ListIndex, 1)
TBLStAbgabe = .List(.ListIndex, 2)
TBLStZahlart = .List(.ListIndex, 3)
TBSend = .List(.ListIndex, 4)
End With
End Sub

Private Sub UserForm_Initialize()
Dim lngZeile As Long, lngZeileMax As Long, lngz As Long
Dim i As Integer
With Me.LB1
.ColumnCount = 6
.ColumnWidths = "40;120;0;0;0;0"
.ColumnHeads = True
.Font.Size = 10
End With
With Tabelle3
lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row
Me.LB1.RowSource = .Name & "!A2:F" & lngZeileMax
End With
With CBJahr
For i = 2021 To 2100
.AddItem CInt(i)
Next
End With
With CBMonat
For i = 1 To 12
.AddItem CInt(i)
Next
End With
End Sub
Sub WerteLb1Schreiben()
Dim varLc As Integer, i As Integer
Dim last As Integer, Wks As Worksheet
Set Wks = Tabelle4
varLc = LB1.ListCount
For i = 1 To varLc
last = Tabelle4.Cells(Rows.Count, 1).End(xlUp).Row + 1
With LB1
TBMdt = .List(i - 1, 0)
TBName = .List(i - 1, 1)
TBLStAbgabe = .List(i - 1, 2)
TBLStZahlart = .List(i - 1, 3)
TBSend = .List(i - 1, 4)
End With
' aus Boxen Werte in Zellen schreiben
If CBMonat = "" Or CBJahr = "" Then
MsgBox "Bitte Jahr und Monat auswählen", vbInformation, "Fehler! Auswahl Datum"
Exit Sub
End If
If CBMonat.Value = "1" Or CBMonat.Value = "2" Or CBMonat.Value = "3" Then
Wks.Cells(last, 13).Value = "1 Vj"
End If
If CBMonat.Value = "4" Or CBMonat.Value = "5" Or CBMonat.Value = "6" Then
Wks.Cells(last, 13).Value = "2 Vj"
End If
If CBMonat.Value = "7" Or CBMonat.Value = "8" Or CBMonat.Value = "9" Then
Wks.Cells(last, 13).Value = "3 Vj"
End If
If CBMonat.Value = "10" Or CBMonat.Value = "11" Or CBMonat.Value = "12" Then
Wks.Cells(last, 13).Value = "4 Vj"
End If
'MdtNr
Wks.Cells(last, 1).Value = TBMdt
'Name
Wks.Cells(last, 2).Value = TBName
'TBLStAbgabe
Wks.Cells(last, 3).Value = TBLStAbgabe
'LStZahlart
Wks.Cells(last, 4).Value = TBLStZahlart
'Übermittlung
Wks.Cells(last, 5).Value = TBSend
'Monat
Wks.Cells(last, 6).Value = CBMonat
'Jahr
Wks.Cells(last, 7).Value = CBJahr
'CHSV
Wks.Cells(last, 8).Value = False
'CHSVM
Wks.Cells(last, 9).Value = False
'CHLohnM
Wks.Cells(last, 10).Value = False
'CHLSt
Wks.Cells(last, 11).Value = False
'CHEnd
Wks.Cells(last, 12).Value = False
Next i
End Sub Ich habe nur das nötigste geändert, damit es wenigstens funktioniert. Man kann es eigentlich deutlich eleganter machen.
Gruß Uwe
Anzeige
AW: Datenübernahme aus Listbox
08.10.2021 13:17:43
Norman
Hallo Uwe!
Tausend dank für die Hilfe!
Ich habe mir schon gedacht, dass es bestimmt auch elegantere Lösungen gibt. Aber noch stehe ich ganz am Anfang mir VBA Kenntnisse anzueignen und bin daher für die schnelle Unterstützung dankbar.
VG
Norman
AW: Datenübernahme aus Listbox
08.10.2021 13:02:30
Alwin
Die Letzte

Sub nochmals hoffenlich als Ganzes:

Sub WerteLb1Schreiben()
Dim varLc As Integer, i As Integer
Dim last As Integer, Wks As Worksheet
Set Wks = Tabelle4
varLc = LB1.ListCount
For i = 1 To varLc
last = Tabelle4.Cells(Rows.Count, 1).End(xlUp).Row + 1
With LB1
TBMdt = .List(i - 1, 0)
TBName = .List(i - 1, 1)
TBLStAbgabe = .List(i - 1, 2)
TBLStZahlart = .List(i - 1, 3)
TBSend = .List(i - 1, 4)
End With
' aus Boxen Werte in Zellen schreiben
If CBMonat = "" Or CBJahr = "" Then
MsgBox "Bitte Jahr und Monat auswählen", vbInformation, "Fehler! Auswahl Datum"
Exit Sub
End If
If CBMonat.Value = "1" Or CBMonat.Value = "2" Or CBMonat.Value = "3" Then
Wks.Cells(last, 13).Value = "1 Vj"
End If
If CBMonat.Value = "4" Or CBMonat.Value = "5" Or CBMonat.Value = "6" Then
Wks.Cells(last, 13).Value = "2 Vj"
End If
If CBMonat.Value = "7" Or CBMonat.Value = "8" Or CBMonat.Value = "9" Then
Wks.Cells(last, 13).Value = "3 Vj"
End If
If CBMonat.Value = "10" Or CBMonat.Value = "11" Or CBMonat.Value = "12" Then
Wks.Cells(last, 13).Value = "4 Vj"
End If
'MdtNr
Wks.Cells(last, 1).Value = TBMdt
'Name
Wks.Cells(last, 2).Value = TBName
'TBLStAbgabe
Wks.Cells(last, 3).Value = TBLStAbgabe
'LStZahlart
Wks.Cells(last, 4).Value = TBLStZahlart
'Übermittlung
Wks.Cells(last, 5).Value = TBSend
'Monat
Wks.Cells(last, 6).Value = CBMonat
'Jahr
Wks.Cells(last, 7).Value = CBJahr
'CHSV
Wks.Cells(last, 8).Value = False
'CHSVM
Wks.Cells(last, 9).Value = False
'CHLohnM
Wks.Cells(last, 10).Value = False
'CHLSt
Wks.Cells(last, 11).Value = False
'CHEnd
Wks.Cells(last, 12).Value = False
Next i
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige