Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1944to1948
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 aus Liste in Eingabemaske zurückholen

Daten aus Liste in Eingabemaske zurückholen
28.08.2023 15:35:30
Sven
Hallo,
ich suche nach einer Lösung, um Daten aus einer Liste in ein Formular zu ziehen.

Die Tabelle dient als Eingabemaske. Per Makro werden die eingegebenen Daten in eine Liste kopiert und gleichzeitig wird die Eingabemaske wieder geleert.
Aus der Liste ziehen sich dann andere Makros die benötigten Daten und liefern damit mehrere ausgefüllte Formulare.

Nun möchte ich, dass man per Knopfdruck die Daten aus der Liste auch wieder in die Eingabemaske zurückholen kann, um diese dann zu bearbeiten und durch erneutes Speichern eine neue Zeile in der Liste erzeugt und bei dem vorherigen Datensatz in Spalte A "Fehler" rein schreibt.

Anbei eine abgespeckte Beispieldatei dazu.

https://www.herber.de/bbs/user/162528.xlsm

Vielen Dank

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus Liste in Eingabemaske zurückholen
28.08.2023 20:48:25
Alwin Weisangler
Hallo Sven,
Teste mal.
https://www.herber.de/bbs/user/162538.xlsm
klicke in eine Zelle der Zielzeile im Tabellenbereich 2 und dann den Button "Daten holen"

Gruß Uwe
Daten aus Liste in Eingabemaske zurückholen
31.08.2023 10:20:41
Sven
Hallo Uwe, Hallo Herbert,

beide Varianten klappen super. Habe mich für die von Herbert entschieden, da ich glaube, dass ich bei späteren Änderungen besser nachvollziehen kann, was die Befehle tun und wie die Bezüge dazu hergestellt werden.

VIELEN VIELEN DANK für eure Hilfe. Bin immer wieder erstaunt wie viele Möglichkeiten es gibt und wie schnell und gut ihr sowas hinkriegt ;)

Eine einzelne Sache habe ich noch. Und zwar hätte ich gern, dass nach dem "Daten holen" und erneutem Abspeichern in der "Daten"Liste in Spalte A bei der Zeile, die man geholt hat "Fehler" in das Feld geschrieben wird. Anders ausgedrückt: Ich hole z.B. Zeile 2 zurück in die Eingabemaske, bearbeite diese und erzeuge durch "speichern" eine neue Zeile in der Liste (z.B. 5). Damit man sieht, dass der eine Vorgang überschrieben/geändert wurde und man den Eintrag nicht doppelt hat, wird er als Fehler markiert und ich würde dann mit Bedingter Formatierung die Zeile farbig hervorheben wenn vorne "Fehler" steht, so dass ich das nach Ende des Quartals rauslöschen kann um dann meine Statistik zu machen und nichts doppeltes drin habe.
Meine aktuelle Lösung ist ein zusätzlicher Button neben "Daten holen", wo man die zu löschende Zeile angeben muss, die dann den Eintrag "Fehler" erhält.
Das ist aber fehleranfällig durch user ;) Deswegen fände ich besser, wenn es eine Abfrage bei dem "Speicher"-Button gäbe, ob die Datei durch "Daten holen" bearbeitet wurde. Geht so etwas?
Anzeige
AW: Daten aus Liste in Eingabemaske zurückholen
31.08.2023 10:26:57
Herbert Grom
Hallo Sven,

besser wäre es, den geänderten Datensatz wieder an die selbe Zeile zurückzugeben, dann gibt es keine Dubletten. Ich würde dir das mal so machen, wenn das für dich ok ist.

Servus
Daten aus Liste in Eingabemaske zurückholen
31.08.2023 11:10:41
Sven
Ja sehr gerne
Daten aus Liste in Eingabemaske zurückholen
31.08.2023 13:31:06
Sven
Das funktioniert leider nicht so. Das mit dem Drop Down unter Punkt 5 ist nicht umsetzbar.
Die Liste "Daten" wird bis zu 300 Einträge im Monat bekommen und ca. die Hälfte der Einträge sind auf 12 Kunden verteilt, der Rest sind immer einzelne.
Der Datensatz muss sich schon auf den Vorgang beziehen. Die Firma per Dropdown auszuwählen wäre zu umständlich und nicht genau.
Eine Zeile ist ein geschlossener Vorgang. Das zurückholen in die Maske zum Bearbeiten kommt nicht bei allen zum Tragen, das ist meist nur bei den 12 Kunden der Fall,
wo man vorbereitend schon mal die ersten Collis eintragen kann und dann im Laufe der Woche ergänzt, da diese feste Abholtage haben, wo dann gesammelt was raus geht.
Anzeige
AW: Daten aus Liste in Eingabemaske zurückholen
29.08.2023 15:30:56
Sven
Ja, das funktioniert schon mal prima. Allerdings verstehe ich nicht wirklich was du da gemacht hast :D
Ich müsste jetzt noch die anderen Zeilen rüber ziehen können, also "Colli2" bis COlli15"
Aber wie das geht, ist mir nicht ersichtlich. Habe da ein wenig gebastelt, aber kriege das nicht hin.

Was soll das bedeuten:
MsgBox "Es wurde Tabellenblock 2 keine Zelle in der Zielzeile angeklickt", vbCritical, "Problem! fehlende Zeilzeile" ???

Was ist mit Tabellenblock2 gemeint? Es soll keine Zeile anzuklicken sein, sondern nur die Zahl der gewünschten Zeile der Datenliste eingetragen und
dann durch den Button die Werte gezogen werden.
Anzeige
AW: Daten aus Liste in Eingabemaske zurückholen
29.08.2023 20:45:56
Alwin Weisangler
Hallo Sven,

da aus deinen Infos im Thread nicht klar ersichtlich war, wie das "Zurückholen" stattfindet, bin ich nach deiner Beschreibung im Tabellenblatt vorgegangen:

  • Wenn man aus "Daten" eine Zeile wieder haben will, soll man unter 4. die Nummer eingeben und mit 6. die gelben Felder wieder füllen.

  • Da auch aus diesem Satz nicht ersichtlich ich wohin (in welche Zeile) im 2. Block diese Zeile eingetragen werden soll muss zuvor die eine Zelle im Bereich des 2. Blockes in der gewünschten Zeile angeklickt werden. Dann wird die Zeilennummer einer globalen Variable übergeben und mit dieser Zeilennummer das 2. Array in diese Zeile geladen. Das erste Array füllt die Adressdaten im 1. Block.
    Wenn es anders sein soll, braucht es eine entsprechende Beschreibung, was unter welcher Bedingung wo rein muss.
    Das was du zuletzt geschrieben hast widerspricht dem, was ich vorgefunden habe.

    Gruß Uwe
    Anzeige
    AW: Daten aus Liste in Eingabemaske zurückholen
    29.08.2023 21:21:58
    Alwin Weisangler
    da hatten sich ein paar Fehler im Text eingeschlichen - hier der korrigierte Teil:

    Da auch aus diesem Satz nicht ersichtlich ist, wohin (in welche Zeile) im 2. Block diese Zeile eingetragen werden soll, muss zuvor eine Zelle im Bereich des 2. Blockes in der gewünschten Zeile angeklickt werden. Dann wird die Zeilennummer einer globalen Variable übergeben und mit dieser Zeilennummer das 2. Array in diese Zeile geladen. Das erste Array füllt die Adressdaten im 1. Block.

    Gruß Uwe
    AW: Daten aus Liste in Eingabemaske zurückholen
    30.08.2023 08:23:51
    Sven
    Hmm, verstehe ich nicht so ganz wo das widersprüchlich sein soll. Ich versuche es mal anders zu erklären:

    Wenn man in der Eingabemaske einen Vorgang eingibt, wird er durch ein Makro in das andere Tabellenblatt "Daten" kopiert.
    Diese KOMPLETTTE Zeile, die erzeugt wird, muss dann über den "Daten holen"Button auch wieder komplett zurück in die Eingabemaske geholt werden,
    nicht nur einzelne Zeilen (Colli).
    Mit der Eingabemaske wird. u.a. ein Frachtbrief erstellt. Darin gibt man die einzelnen Packstücke (Colli) ein (max 15 Stk.). Das ist dann ein Vorgang.
    Wenn man nun ein weiteres Packstück hinzufügen will, nachdem man bereits gespeichert (in die Liste übertragen hat), oder einen Fehler entdeckt hat,
    soll man über die Rückholfunktion die Daten dieses einen Frachtbriefes, also die gesamte in der Liste gespeicherte Zeile, wieder in der Eingabemaske haben.
    Also exakt die umgekehrte Funktion, wie sie mit dem Button "Speichern" zuvor erstellt wurde.

    Im Detail:
    Die Felder C5:C10 + E5:E10 + I5:I10 + C13:L13 + C14:L14 usw. aus Tabelle 1 werden durch das Makro "speichern" in Tabelle 3 in eine Zeile kopiert.
    Mit "Daten holen" sollen dann die Daten, die in der ausgewählten Zeile in "Datensatz wählen" eingetragen wurde, aus der Tabelle "Daten" wieder komplett in die Felder
    C5:C10 + E5:E10 + I5:I10 + C13:L13 + C14:L14 zurück geholt werden, damit man sie bearbeiten/ergänzen und dann wieder neu "speichern" kann.

    Ich habe versucht genau das selbe zu nutzen, wie im Makro "speichern", nur das ich halt die Bezugs- und Zielzellen geändert habe. Mein Problem dabei war u.a, dass ich damit nicht die Zeile ansteuern konnte, die ich mit "Datensatz wählen" haben wollte, sondern immer nur die erste Zeile ziehen konnte.

    Hoffe das war jetzt etwas verständlicher. ich vermute dich hat in der Texttabelle das Wort "eine Zeile" irritiert. Gemeint ist damit die KOMPLETTE Zeile aus "Daten", die über das "Daten holen" wieder aufgesplittet in die "Eingabemaske" zurück soll und nicht nur eine einzelne Zeile in "Colli".

    Danke für deine Mühen
    Anzeige
    AW: Daten aus Liste in Eingabemaske zurückholen
    30.08.2023 09:59:13
    Alwin Weisangler
    Hallo Sven,

    dann so:
    
    
    Option Explicit

    Sub Daten_holen()
    Dim arrReturn(), arrReturnAdr(), arrReturnDat(), rngNr As Range, i&, j&, iZeile&
    iZeile = 13
    Set rngNr = Tabelle6.Columns(2).Find(Tabelle1.Range("K29"), Lookat:=xlWhole)
    If Not rngNr Is Nothing Then
    With Tabelle6
    arrReturn = .Rows(rngNr.Row).Value
    arrReturnAdr = Application.Index(arrReturn, Evaluate("row(1:" & UBound(arrReturn, 1) & ")"), Array(4, 5, 6, 7, 8, 9))
    arrReturnDat = .Range(.Cells(rngNr.Row, 25), .Cells(rngNr.Row, 174)).Value
    End With
    With Tabelle1
    For i = 1 To 6
    .Cells(i + 4, 3) = arrReturnAdr(i)
    Next i
    For i = 1 To UBound(arrReturnDat, 2)
    j = j + 1
    .Cells(iZeile, j + 2) = arrReturnDat(1, i)
    If j = 10 Then
    iZeile = iZeile + 1
    j = 0
    End If
    Next i
    End With
    Tabelle6.Cells(rngNr.Row, 1) = "Fehler"
    End If
    End Sub

    Du musst zusätzlich noch die Worksheet_SelectionChange Prozedur im Modul der Tabelle1 rausnehmen.

    Gruß Uwe


    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige