2.1k Aufrufe
Gefragt in Windows 7 von ahorn38 Experte (3.2k Punkte)
Hallo,
ich habe ein kleines update-Programm, in dem bestimmte Daten im Arbeitsblatt "Depotveränderung" aus einem anderen Arbeitsblatt1 derselben Datei aktualisiert werden. Bisher habe ich dieses Arbeitsblatt1 immer in die aktuelle Datei hereinkopiert. Auf diesen Schritt möchte ich aber verzichten und direkt auf das Arbeitsblatt1 zugreifen, solange es noch eine gesonderte Datei ist. Aktuell sieht das Programm so aus:

Sub UpdateDepot()
'Aktualisiert in der Zieldatei ausgewählte Datensätze aus "Arbeitsblatt1"

Sheets("Arbeitsblatt1").Select

Dim rng As Range
Dim iRow As Integer
Dim wkn As String
iRow = 1
Do Until IsEmpty(Cells(iRow, 1))
wkn = Right(Cells(iRow, 1), 6)

Set rng = Worksheets("Depotveränderung").Columns(1).Find( _
what:=wkn, lookat:=xlWhole, LookIn:=xlValues)

..................

Welche Befehle muss ich jetzt noch ergänzen, um deutlich zu machen, dass Arbeitsblatt1und Depotveränderung verschiedenen Dateien DAT1 und DAT2 angehören?

6 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

du kannst per WORKBOOK die einzelnen (offenen) Arbeitsmappen ansprechen.

Bsp:
Workbook("Dat1").Sheets("Arbeitsblatt1").Select

Set rng = Workbook("Dat2").Worksheets("Depotveränderung").Columns(1).Find( _
what:=wkn, lookat:=xlWhole, LookIn:=xlValues)


Gruß

M.O.
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Danke für den Hinweis. Ich habe die Befehlsfolge jetzt wie folgt verändert - erhalte aber beim letzten Befehl eine Fehler...?:
Sub UpdateDepot()
'
'Aktualisiert in der Zieldatei ausgewählte Datensätze aus "Arbeitsblatt1"

Workbooks.Open "C:\users\Andreas Rudolph\Andreas Safe\AAB\Depot 2013.xlsx"
Workbooks("Depot 2013.xlsx").Sheets("Arbeitsblatt1").Select


' Sheets("Arbeitsblatt1").Select

Dim rng As Range
Dim iRow As Integer
Dim wkn As String
iRow = 1
Do Until IsEmpty(Cells(iRow, 1))
wkn = Right(Cells(iRow, 1), 6)

Set rng = workbooks("AAB Auswertung").Worksheets("Depotveränderung").Columns(1).Find(
what:=wkn, lookat:=xlWhole, LookIn:=xlValues)

Hast du noch eine Idee woran das liegen könnte. Danke!
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

ich hatte in meiner Antwort vergessen, bei den Dateinamen das .xlsx dranzuhängen :-(.

Du musst also bei dem fehlerhaften Codeteil noch .xlsx ergänzen:

Set rng = Workbooks("AAB Auswertung.xlsx).Worksheets(...


Oder, falls der Code aus deiner Arbeitsmappe AAB Auswertung ausgeführt wird, schreibst du einfach:

Set rng = ThisWorkbook.Worksheets(....


Gruß

M.O.
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hi M.O. Super danke das funktioniert jetzt und ich bin fast am Ziel bis auf einen kleinen Schönheitsfehler...
Der Bildschirm bleibt in der "Hilfsdatei" Arbeitsblatt1 stehen aus der ich die Aktualisierungsadaten lade. Ich möchte aber nach Abschluss des Programms in das Arbeitsblatt "Depotveränderungen" zu rück. Habs mit den beiden Varianten probiert, kriege aber immer einen Fehler...??:

ThisWorkbook.Worksheets("Depotveränderung").Select

oder

Workbooks("AAB Auswertung.xlsm").Sheets("Depotveränderung").select
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

du kannst es auch mal mit
ThisWorkbook.Worksheets("Depotveränderung").Activate

versuchen.
Ansonsten poste mal die Fehlermeldung.

Gruß

M.O.
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo M.O., super, das war die Lösung - jetzt läuft alles einwandfrei!!
...