Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1784to1788
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 select für Userform und einlesen

Daten select für Userform und einlesen
06.10.2020 11:56:28
Richi
Sali Zäme
Ich komme nicht weiter….
Ich möchte folgendes machen:
Über Userform und Combobox (Datum aus bestehender Tabelle erstellen). Diesen Teil konnte ich lösen.
Nun möchte ich über die Selektion eines in Combobox stehenden Datums alle Tabelleneinträge in UserForm anzeigen (in Tabelle können pro Datum 1:7 Einträge sein). Mit den Daten in den Textboxen will ich Korrekturen anbringen diese anschliessend wieder in richtiger Zelle der Tabelle abspeichern. Daten in Tabelle sind nach Datum sortiert.
Ich steh Hoffnungslos an mit meinen VBA Kenntnissen.
Hoffe da kann mir jemand helfen.
Liebe Gruess
Richi
https://www.herber.de/bbs/user/140691.xlsm

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten select für Userform und einlesen
06.10.2020 12:49:13
Nepumuk
Hallo Richi,
teste mal:
Option Explicit

Dim mlngFirstRow As Long, mlngCount As Long

Private Sub ComboBox1_Change()
    Dim dtmDate As Date
    Dim lngRow As Long
    dtmDate = CDate(ComboBox1.Value)
    mlngCount = 0
    Call ClearTextBoxes
    With ThisWorkbook.Worksheets("Quelle")
        For lngRow = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row
            If .Cells(lngRow, 1).Value = dtmDate Then
                If mlngCount = 0 Then mlngFirstRow = lngRow
                mlngCount = mlngCount + 1
                Controls("TextBox" & CStr(mlngCount)).Text = .Cells(lngRow, 2).Value
                Controls("TextBox" & CStr(mlngCount + 7)).Text = .Cells(lngRow, 3).Value
            End If
            If .Cells(lngRow, 1).Value > dtmDate Then Exit For
        Next
    End With
End Sub

Private Sub CommandButton1_Click()
    Dim lngRow As Long, lngIndex As Long
    With ThisWorkbook.Worksheets("Quelle")
        For lngRow = mlngFirstRow To mlngFirstRow + mlngCount - 1
            lngIndex = lngIndex + 1
            .Cells(lngRow, 2).Value = Controls("TextBox" & CStr(lngIndex)).Text
            .Cells(lngRow, 3).Value = Controls("TextBox" & CStr(lngIndex + 7)).Text
        Next
    End With
End Sub

Private Sub CommandButton2_Click()
    Unload Me
End Sub

Private Sub TextBox14_Change()
    
End Sub

Private Sub UserForm_Initialize()
    Dim lngRow As Long
    With ThisWorkbook.Worksheets("Quelle")
        For lngRow = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
            If Application.CountIf(.Range(.Cells(2, 1), .Cells(lngRow, 1)), .Cells(lngRow, 1).Value) = 1 Then
                ComboBox1.AddItem .Cells(lngRow, 1).Text
            End If
        Next
    End With
End Sub

Private Sub ClearTextBoxes()
    Dim lngIndex As Long
    For lngIndex = 1 To 14
        Controls("TextBox" & CStr(lngIndex)).Text = vbNullString
    Next
End Sub

Gruß
Nepumuk
Anzeige
AW: Daten select für Userform und einlesen
06.10.2020 13:21:41
Richi
Hallo Nepumuk
Funktioniert einwandfrei. Ich danke dir herzlich.
Was wäre, wenn ich einen Nachtrag in eine der leeren Zellen hinzufügen möchte. Ich weiss das war nicht meine ursprüngliche Frage.
Gruss Richi
AW: Daten select für Userform und einlesen
06.10.2020 13:40:58
Nepumuk
Hallo Richi,
kein Problem:
Private Sub CommandButton1_Click()
    Dim lngRow As Long, lngIndex As Long
    With ThisWorkbook.Worksheets("Quelle")
        For lngRow = mlngFirstRow To mlngFirstRow + mlngCount - 1
            lngIndex = lngIndex + 1
            .Cells(lngRow, 2).Value = Controls("TextBox" & CStr(lngIndex)).Text
            .Cells(lngRow, 3).Value = Controls("TextBox" & CStr(lngIndex + 7)).Text
        Next
        Do
            lngIndex = lngIndex + 1
            If lngIndex = 8 Then Exit Do
            If Controls("TextBox" & CStr(lngIndex)).Text <> vbNullString Then
                lngRow = mlngFirstRow + lngIndex - 1
                .Rows(lngRow).Insert
                .Range(.Cells(lngRow, 1), .Cells(lngRow, 3)).Value = Array( _
                    CDate(ComboBox1.Value), _
                    Controls("TextBox" & CStr(lngIndex)).Text, _
                    Controls("TextBox" & CStr(lngIndex + 7)).Text)
            Else
                Exit Do
            End If
        Loop
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Daten select für Userform und einlesen
06.10.2020 13:49:13
Richi
Ist ja der Hammer.
Nochmals herzlichen Dank
Liebe Gruess
Richi

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige