Spalteninhalte kopieren wenn Bedingung erfüllt.

Sorry, hatte weiter oben den Fehler einmal dargestellt. Und er kommt immer noch wenn ich den Code starte.
Sobald der Code die zweite Datei "passiert" hat, und in Die Tabelle springen soll wird der Fehlercode eingeblendet.


Visual Basic:
Hallo, habe den Code mit meinen mitteln einmal verändert. Jetzt wird ein Fehler bei:
Visual Basic:

' Arbeitsblätter festlegen
    Set wsQuelle = wbQuelle.Sheets(1) ' Tabelle in Listemit
    Set wsZiel = wbZiel.Sheets(1)     ' Tabelle in Listeohne

angezeigt.
anwendungs und objectdefinierter Fehler
Laufzeitfehler 1004

Der Pfad und die Tabellenbezeichnungen sind korrekt, x mal kontrolliert.
 
Dann leg mal für alle 4 Variablen eine Überwachung fest, und während dem Einzelschritt (F8) schau dir die Werte dort genau an
 
Das wird beim überwachnungsausdruch angezeigt:
Als Ergebnis wird: Wert außerhalb des Kontexts, Typ wird mit Empty angezeigt. In Tabelle1

Wenn ich das mit
Errorhandler:
Debug.Print Err.Description, Err.Number, Err.Source
Exit Sub
mache, wird bei Wert ")" und bei Typ String angezeigt. Und bei Kontext Tabelle1 Datenkopieren44
 
Da hast du es: eine Variable hat nen ungültigen Wert (Und WELCHE???)

Deine Aussage: Ich habe die Dateinamen usw alle kontrolliert ist wertlos.
Das Programm entscheidet, ob dein Dateiname korrekt ist
 
So funktioniert der Code mit allen Auswahlkriterien. Danke für alle Hinweise. Gruß
Visual Basic:
Sub Daten_übertragen_Überarbeitet()
    Dim wbQuelle As Workbook, wbZiel As Workbook
    Dim wsQuelle As Worksheet, wsZiel As Worksheet
    Dim lastRowQuelle As Long, lastRowZiel As Long
    Dim i As Long, c As Range
    Dim wert As String

    ' Arbeitsmappen öffnen
    Set wbQuelle = Workbooks.Open("C:\Users\Besitzer\Desktop\Listemit.xls")
    Set wbZiel = Workbooks.Open("C:\Users\Besitzer\Desktop\Listeohne.xlsm")

    ' Arbeitsblätter festlegen
    Set wsQuelle = wbQuelle.Sheets(1)
    Set wsZiel = wbZiel.Sheets(1)

    ' Letzte Zeilen in beiden Blättern ermitteln
    lastRowQuelle = wsQuelle.Cells(wsQuelle.Rows.Count, 2).End(xlUp).Row ' Letzte Zeile in Spalte B der Quelldatei
    lastRowZiel = wsZiel.Cells(wsZiel.Rows.Count, 2).End(xlUp).Row ' Letzte Zeile in Spalte B der Zieldatei

    ' Durch die Zeilen in der Zieldatei (Listeohne) iterieren
    For i = 1 To lastRowZiel
        wert = wsZiel.Cells(i, 2).Value ' Wert in Spalte B der Zieldatei

        ' Spalte B der Quelldatei nach dem Wert durchsuchen
        Set c = wsQuelle.Columns("B").Find(What:=wert, LookIn:=xlValues, LookAt:=xlWhole)

        ' Wenn der Wert gefunden wurde, kopiere den Wert aus Spalte A der Quelldatei in Spalte A der Zieldatei
        If Not c Is Nothing Then
            wsZiel.Cells(i, 1).Value = wsQuelle.Cells(c.Row, 1).Value ' Kopiere Wert aus Spalte A
        End If
    Next i

    ' Optional: Quelldatei und Zieldatei nicht schließen, falls gewünscht
    MsgBox "Datenübertragung abgeschlossen!", vbInformation
End Sub
 

Neue Beiträge

Zurück