Office: VBA-Automatische Aktualisierung und Einfügen von kopierten Zellen

Helfe beim Thema VBA-Automatische Aktualisierung und Einfügen von kopierten Zellen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, ich habe eine Frage, vielleicht kann mir dabei ja jemand helfen, ich komme leider selber auf keine praktikable Lösung Ich habe zwei Dateien:... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von jenniS, 27. April 2023.

  1. jenniS Neuer User

    VBA-Automatische Aktualisierung und Einfügen von kopierten Zellen


    Hallo,

    ich habe eine Frage, vielleicht kann mir dabei ja jemand helfen, ich komme leider selber auf keine praktikable Lösung

    Ich habe zwei Dateien:

    Haupt-Datei und Inventurliste (die Namen dieser Dateien sind immer gleich)

    Es gibt immer in unregelmäßigen Abständen eine neue Inventurliste, diese ersetzt dann die Alte, damit der Name gleich bleibt!

    In die Haupt-Datei sollen nun immer alle Zeilen an den Schluss „kopiert“ werden, die in der Inventurliste sind, aber nicht in der Haupt-Datei. Es muss also quasi ein Abgleich stattfinden und dann sollen alle Zeilen (die in der Inventurliste sind aber nicht in der Haupt-Datei) automatisch in die Hauptdatei übernommen werden.


    Super wäre es, wenn dieser Abgleich immer stattfinden würde, wenn ich auf einen dafür vorgesehenen Knopf drücke.

    Vielen Dank für jeden Tipp!
     
    jenniS, 27. April 2023
    #1
  2. Klaus-Dieter Erfahrener User
    Hallo Jennis,

    Daten in zwei (oder mehr) Dateien konsistent zu halten, ist eine Sache, die eher zum Scheitern verurteilt ist. Der Sinn erschließt sich ohnehin nicht.
     
    Klaus-Dieter, 27. April 2023
    #2
  3. jenniS Neuer User
    es geht dabei darum, dass in der Haupt-Datei Handschrift Notizen gemacht werden, diese dient als Lagerliste. Nun sollen neu hinzukommende Waren (diese sind nur in der Inventurliste, da wir diese aus unserem System ziehen können) in die Haupt-Datei hinzugefügt werden. Ich hatte gehofft dies zu automatisieren.
     
    jenniS, 27. April 2023
    #3
  4. Lutz Fricke Erfahrener User

    VBA-Automatische Aktualisierung und Einfügen von kopierten Zellen

    Hallo jenniS,

    dann nimm doch einfach die Inventurliste und mach darauf die Notizen...
    Wie ist dein Plan, wenn Waren aus dem System gelöscht werden? Sollen die trotzdem in der Hauptliste stehen bleiben?

    Gruß,
    Lutz
     
    Lutz Fricke, 27. April 2023
    #4
  5. jenniS Neuer User
    Hallo Lutz,

    das geht leider nicht, da wir ja immer neue Ware reinbekommen und somit ja ständig eine neue Inventurliste haben, bei welcher dann die Notizen die per Hand gemacht wurden wieder weg sind.
    Mein Ziel ist es wirklich, dass in die Haupt-Datei immer die neuen Zeilen aus der Inventur-Datei reinkopiert werden, nur würde ich das ungern immer händisch (oder mit einfachen excel Formeln) machen sondern gerne so automatisiert wie es geht.

    der Punkt der gelöschen Waren ist erstmal zu vernachlässigen, zunächst werden diese in der hauptliste stehen bleiben
     
    jenniS, 27. April 2023
    #5
  6. jenniS Neuer User
    Ich habe nun soweit einen Code, leider ist hierbei noch ein Fehler, da beim Ausführen quasi nichts passiert, hat hier jemand vielleicht eine Idee was ich falsch gemacht habe?

    Sub Abgleich()

    'Variablen deklarieren
    Dim HauptDatei As Workbook
    Dim InventurDatei As Workbook
    Dim HauptTabelle As Worksheet
    Dim InventurTabelle As Worksheet
    Dim letzteZeile As Long
    Dim Zeile As Long
    Dim gefunden As Boolean
    Dim sPfad As String

    'ScreenUpdating und PopUps deaktiven
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    'Dateipfad der Quelldatei
    sPfad = "I:\_Muster GoodNotes\TEst\InventurDatei.xlsx"

    'Prüfen ob die Datei existiert
    If Dir(sPfad) <> "" Then

    'Dateien öffnen
    Set HauptDatei = ActiveWorkbook
    Set InventurDatei = Workbooks.Open(sPfad)

    'Tabellen zuweisen
    Set HauptTabelle = HauptDatei.Worksheets("Inventory")
    Set InventurTabelle = InventurDatei.Worksheets("Inventory2")

    'letzte Zeile in der Haupttabelle ermitteln

    With Worksheets(1).UsedRange
    leZeile = .Row + .Rows.Count - 1
    End With

    'Durch alle Zeilen in der Inventurtabelle iterieren
    For Zeile = 2 To InventurTabelle.Cells(Rows.Count, 1).End(xlUp).Row

    'prüfen, ob die Zeile in der Haupttabelle vorhanden ist
    gefunden = False
    For i = 2 To letzteZeile
    If InventurTabelle.Cells(Zeile, 1) = HauptTabelle.Cells(i, 1) Then
    gefunden = True
    Exit For
    End If
    Next i

    'wenn die Zeile in der Haupttabelle nicht gefunden wurde, Zeile in Haupttabelle einfügen
    If gefunden = False Then
    HauptTabelle.Cells(letzteZeile + 1, 1).Value = InventurTabelle.Cells(Zeile, 1)
    HauptTabelle.Cells(letzteZeile + 1, 2).Value = InventurTabelle.Cells(Zeile, 2)
    'weitere Spalten hinzufügen, falls nötig
    letzteZeile = letzteZeile + 1
    End If

    Next Zeile

    'Inventurdatei schließen
    InventurDatei.Close
    End If
    'ScreenUpdating und PopUps aktiven
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    End Sub
     
    jenniS, 3. Mai 2023
    #6
  7. Lutz Fricke Erfahrener User
    Hallo jenniS,

    "da beim Ausführen quasi nichts passiert" ist eine etwas schwierige Aussage...

    Fangen wir grundsätzlich an:
    • Hast Du in deinem Modul "Option explicit" deklariert? Wenn ja, MUSST Du alle Variablen zu Beginn des Makros mit Dim deklarieren. Das hilft, um Variablen nicht verkehrt zu schreiben etc.
    • Kennst Du den Einzelschritt-Modus? Damit läufst Du dein Makro Schritt für Schritt durch und kannst sehen, was passiert.
    • Application.DisplayAlerts ist für Anfänger Teufelszeug. Du unterdrückst alle Fehlermeldungen und siehst nicht, was falsch läuft. Also raus damit.
    • Application.ScreenUpdating ist nur Kosmetik, also vorerst raus.
    Dann im Detail:
    • Fängt Dein Pfad wirklich so an ""I:\_Muste..."?
    • Du definierst die beiden Tabellen, arbeitest dann aber mit "With Worksheets(1).UsedRange". In welchem Workbook ist Worksheets(1)?
    • Ist das wirklich die letzte Zeile: "leZeile = .Row + .Rows.Count - 1"? Schau mal hier: Letzte Zeile, letzte Spalte und letzte Zelle per VBA ermitteln – Excel-Inside Solutions
    • Ist leZeile oder "For i = 2 To letzteZeile" die letzte Zeile?
    • Du setzt in der Schleife "gefunden = True", aber nie wieder auf false... Muss natürlich in en beginn der äußeren Schleife rein.
    Gruß,
    Lutz
     
    Lutz Fricke, 3. Mai 2023
    #7
  8. jenniS Neuer User

    VBA-Automatische Aktualisierung und Einfügen von kopierten Zellen

    Hallo Lutz,
    vielen Dank für deine super ausführliche Antwort und deine Hilfe!!
    Ich versuche jetzt mal - soweit ich weiß was ich dafür tun muss- auf alles zu antworten
    - nein, das Modul Option explicit habe ich nicht deklariert
    - ja, die Funktion kenne ich, wenn ich damit durch meinen Code gehe, dann wird springt er von 'durch alle Zeilen in der Inventurtabelle internieren, direkt zu 'Inventurdatei schließen. Es werden also die zwei Teile 'Prüfen ob die Zeile vorhanden ist und 'wenn nicht dann einfügen' übersprungen (das ist gerade leider auch noch immer der Fall)
    - alles klar, ist rausgenommen
    - ist ebenfalls rausgenommen

    - ja, der Pfad ist tatsächlich richtig, es öffnete sich auch die richtige Datei beim Ausführen des Codes
    -Worksheets(1) ist die Tabelle in der HauptDatei
    - die letzte Zeile habe ich wie in dem Link von dir gesendet angepasst
    - For i = 2 To letzteZeile soll die letzte Zeile sein
     
    jenniS, 3. Mai 2023
    #8
  9. Lutz Fricke Erfahrener User
    Hallo JenniS,
    • dann unbedingt an den Beginn deines Moduls "Option explicit" schreiben. Nur so siehst Du, ob alle Variablen deklariert und IMMER richtig geschrieben sind (wie schnell wird aus "LetzteZeile" ein "LetzteZelle"...)
    • Wenn Du im Einzelschrittmodus von For Zeile = 2 To InventurTabelle.Cells(Rows.Count, 1).End(xlUp).Row zum Schließen springst, ist die letzte Zeile (in Spalte 1) der InventurTabelle kleiner 2.
    • Ist "Set HauptTabelle = HauptDatei.Worksheets("Inventory")" das selbe wie "With Worksheets(1)."? Dann solltest Du immer "HauptTabelle" verwenden.
    • Wenn "For i = 2 To letzteZeile" die letzte Zeile ist, wo weist Du der Variablen "letzteZeile" einen Wert zu? (siehe "option explicit").
    Kannst Du deine Datei ins Forum stellen? Das macht die Arbeit etwas leichter...

    Gruß,
    Lutz
     
    Lutz Fricke, 3. Mai 2023
    #9
  10. jenniS Neuer User
    Hallo Lutz,

    ich werde mir deine Anmerkungen morgen noch mal ganz in Ruhe ansehen :)

    klar, die Datei habe ich hochgeladen (die InventurDatei sieht vom Aufbau her genauso aus)

    Vielen vielen Dank dir!
     
    jenniS, 3. Mai 2023
    #10
  11. Lutz Fricke Erfahrener User
    Hallo jenniS,

    lass mich nochmal auf dem "Option explicit" rumreiten. Du hast z.B. i nicht deklariert, das würde dir "Option explicit" anmerken.
    Das hier ist etwas merkwürdig:
    Code:
       With letzteZeile = Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row
           
       End With
    da würde ich
    Code:
    letzteZeile=HauptTabelle.Cells(Rows.Count, 1).End(xlUp).Row
    draus machen.

    Und dann natürlich der Grundaufbau deiner Tabelle. Warum lässt Du die oberste Zeile und die linke Spalte leer? Für die Optik im Ausdruck kannst Du im Layout die Ränder anpassen.
    Aber aufgrund dieses Layout ergibt .Cells(Rows.Count, 1).End(xlUp).Row natürlich 1 und damit laufen deine For-Next-Schleifen nicht.. Auch beim Einfügen wird in die falschen Zellen geschrieben.

    Gruß,
    Lutz
     
    Lutz Fricke, 4. Mai 2023
    #11
    1 Person gefällt das.
  12. jenniS Neuer User
    Hallo Lutz,

    alles klar, dann werde ich gleich mal Option Explicit mit reinnehmen:)
    wird angepasst!

    die Tabelle habe ich so aus unserem System heraus erhalten, daher sieht die so aus, aber das ist ja kein Problem anzupassen und macht durchaus Sinn! Werde die erste Spalte und Zeile löschen, sodass dort direkt der text startet

    Gruß Jenni
     
    jenniS, 4. Mai 2023
    #12
  13. jenniS Neuer User

    VBA-Automatische Aktualisierung und Einfügen von kopierten Zellen

    Hallo Lutz,

    ich habe das ganze jetzt noch mal mit deinen Änderungen gestartet und es fängt an zu funktionieren!!
    Es werden jetzt auf jeden Fall schon einmal die ersten beiden Spalten so wie es sollen rüberkopiert, also die Paletten-Gruppe und die Lfd.Nr. (Warum die anderen Spalten nicht ergibt sich mir noch nicht so ganz)!

    Danke dir!!
     
    jenniS, 4. Mai 2023
    #13
  14. jenniS Neuer User
    GESCHAFFT !!
    Vielen Dank für deine Hilfe!
     
    jenniS, 4. Mai 2023
    #14
Thema:

VBA-Automatische Aktualisierung und Einfügen von kopierten Zellen

Die Seite wird geladen...
  1. VBA-Automatische Aktualisierung und Einfügen von kopierten Zellen - Similar Threads - VBA Automatische Aktualisierung

  2. Werte per VBA automatisch übertragen und fortlaufend speichern

    in Microsoft Excel Hilfe
    Werte per VBA automatisch übertragen und fortlaufend speichern: Moin, ich habe da mal eine bitte: wie kann ich diesen Code dazu bringen von einer bestimmten Datei automatische Werte in eine andere Datei kopiert? Ich kann zwar die Werte in derselben Tabelle...
  3. Dynamische Tabellen mit automatischer Aktualisierung

    in Microsoft Excel Hilfe
    Dynamische Tabellen mit automatischer Aktualisierung: Hallo in die Runde! Vorab schon mal vielen Dank für alle Mühen und die Hilfe! Ich habe folgendes Anliegen: Ich habe eine Geräteliste als Excel Datei mit einigen verschiedenen Tabellenblättern...
  4. VBA - Kopf- und Fußzeilen Anpassen mit Logos

    in Microsoft Excel Hilfe
    VBA - Kopf- und Fußzeilen Anpassen mit Logos: Hallo zusammen, ich bin auf der Suche nach einer Lösung mehrere Excel Dokumente (Viele Anhänge, die ich immer wieder anpassen muss, die aber nicht in einer Datei gespeichert werden können/...
  5. Zeilen automatisch sperren mittels VBA (wenn Bedingung erfüllt)

    in Microsoft Excel Hilfe
    Zeilen automatisch sperren mittels VBA (wenn Bedingung erfüllt): Moin zusammen, folgendes Problem: Im Normalfall verzichte ich aus Gründen auf den Einsatz von VBA, aber dieses Mal komme ich nicht umher. Ich habe schon fleißig recherchiert und mich versucht,...
  6. Automatisch aktualisierende Tabelle? Hilfe!! :-)

    in Microsoft Excel Hilfe
    Automatisch aktualisierende Tabelle? Hilfe!! :-): Hallo zusammen, ich habe da ein kleines Excel-Problem und komme einfach nicht auf die Lösung. Ich habe 25 riesige Tabellen und möchte diese in einer Tabelle zusammen, wenn eine bestimmte...
  7. Hyperlink VBA / Automatische Ergänzung

    in Microsoft Excel Hilfe
    Hyperlink VBA / Automatische Ergänzung: Guten Tag zusammen, ich habe folgendes Problem: Ich habe eine Datei mit insgesamt ca 50. Tabellenblättern. Auf dem Tabellenblatt Tabelle 1 ist die Gesamtübersicht mit allen Gesellschaften,...
  8. VBA - automatische Aktualisierung aus Datenbank

    in Microsoft Excel Hilfe
    VBA - automatische Aktualisierung aus Datenbank: Hi ihr! Ich hab ein großes Problem, auf dessen Lösung ich selbst nach mehreren Tagen Probieren nicht komme. Ich hoffe echt, ihr könnt mir helfen! Ich will euch die Situation erklären. Ich...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden