Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1164to1168
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
Select-Methode Laufzeitfehler 1004
grossermanitu
Hallo per Makro rufe ich den Dialog-Datei öffen auf um eine weitere XLS zu öffnen. In dieser wird per Schleife verglichen ob die Spaltenüberschriften der geöffneten XLS mit der Ausgangs-XLS übereinstimmt. Falls dies ist, soll der Inhalt der Spalte in die Ausgangs-XLS eingefügt werden. Leider bekomme ich andauernd den Laufzeitfehler 1004 in dieser Zeile:

Worksheets("Bedarfsanfragen").Range(Cells(2, i), Cells(65536, i)).Select 'Spalte i Statusliste (filename) kopieren

Ich habe schon alles mögliche probiert bekomme aber keine Lösung. Wäre klasse wenn mir jemand kurz unter die Arme greifen könnte. Danke
Option Explicit
Private Sub CommandButton1_Click()
'Variablen deklarieren
Dim statusliste As Workbook
Dim i As Integer
Dim j As Integer
Dim readfile As String
Dim filename As String
Application.DisplayAlerts = False 'Alarm ausschalten
Application.ScreenUpdating = False 'Displayaktualisierung ausschalten
readfile = Application.GetOpenFilename("XLS-Files (*.xls),") 'Dateiöffnen-dialog aufrufen
filename = Right(readfile, Len(readfile) - InStrRev(readfile, "\")) 'Dateinamen auslesen
If IsWorkbookOpen(filename) Then 'Falls Datei schon geöffnet ist
MsgBox "Statusliste bereits geöffnet. Bitte für den Datenimport schließen."
Exit Sub
Else
Set statusliste = Workbooks.Open(readfile)
End If
'Daten Tabellenblatt Statusliste löschen
Workbooks("Bestellreport_MSP_D.xls").Worksheets("Statusliste").Range("A3:DZ65536").EntireRow. _
Delete
Workbooks("Bestellreport_MSP_D.xls").Worksheets("Statusliste").Range("A2:DZ2").ClearContents
'Daten Tabellenblatt Bestellung 2010H löschen
Workbooks("Bestellreport_MSP_D.xls").Worksheets("Bestellungen 2010H").Range("A3:DZ65536"). _
EntireRow.Delete
'Daten Tabellenblatt Bestellung 2010 löschen
Workbooks("Bestellreport_MSP_D.xls").Worksheets("Bestellungen 2010").Range("A10:DZ65536"). _
EntireRow.Delete
'Spalten Statusliste übertragen
For j = 1 To 85 'Prüfe Zelle A1, B1,... CM1 in Bestellreport
For i = 1 To 120 'mit Zelle A1, B1,... DM1 in Statusliste ob gleicher Wert
If Workbooks("Bestellreport_MSP_D.xls").Worksheets("Statusliste").Cells(1, j) = Workbooks( _
filename).Worksheets("Bedarfsanfragen").Cells(1, i) Then
Workbooks(filename).Activate
Worksheets("Bedarfsanfragen").Activate
Worksheets("Bedarfsanfragen").Range(Cells(2, i), Cells(65536, i)).Select 'Spalte i  _
Statusliste (filename) kopieren
Selection.Copy
Workbooks("Bestellreport_MSP_D.xls").Activate
Worksheets("Statusliste").Activate
Worksheets("Statusliste").Cells(2, j).Select 'In Spalte j Bestellreport einfügen
ActiveSheet.Paste
End If
Next i
Next j
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Select-Methode Laufzeitfehler 1004
01.07.2010 23:33:53
fcs
Hallo GrosserManitu,
du führst mit einer Prozedur in einem Tabellenblatt-Modul Aktionen in anderen Tabellenblättern aus. Hier beziehen sich Range und Cells ohne vorangestelltes Tabellen-Objekt immer auf das Tabellenblatt in dem der Code steht und nicht unbedingt auf das aktive Blatt. Das wird dir bei der Select-Anweisung in der anderen Datei zum Verhängnis.
In diesem Fall muss du die Range und Cell-Objekte im Code vollständig referenzieren.
Besser ist natürlich für den Kopiervorgang komplett auf Activate und Select zu verzichten.
Code-Anpasungen:
'Entweder:
Workbooks(Filename).Activate
With Worksheets("Bedarfsanfragen")
.Activate
.Range(.Cells(2, i), .Cells(65536, i)).Select 'Spalte i Statusliste (filename) kopieren
Selection.Copy
End With
Workbooks("Bestellreport_MSP_D.xls").Activate
Worksheets("Statusliste").Activate
Worksheets("Statusliste").Cells(2, j).Select 'In Spalte j Bestellreport einfügen
ActiveSheet.Paste
'oder - ohne Select und Activate
With Workbooks(Filename).Worksheets("Bedarfsanfragen")
'Spalte i Statusliste (filename) kopieren nach Spalte j Bestellreport einfügen
.Range(.Cells(2, i), .Cells(65536, i)).Copy Destination:= _
Workbooks("Bestellreport_MSP_D.xls").Worksheets("Statusliste").Cells(2, j)
End With
Gruß
Franz
Anzeige
AW: Select-Methode Laufzeitfehler 1004
02.07.2010 14:18:54
grossermanitu
Danke Franz du hast mir den Tag gerettet. Gruß Grossermanitu
AW: Select-Methode Laufzeitfehler 1004
02.07.2010 14:34:40
grossermanitu
Ich bin es nochmal.
ich möchte den Die Werte von A2 bi Z2 per autofill vervollständigen. Allein funktioniert mein 2-Zeiler allerdings im code bekomme ich wieder einen Fehler.
With Workbooks("Bestellreport_MSP_D.xls").Worksheets("Bestellungen 2010H")
.Range("A2:Z2").AutoFill Destination:=Range("A65535:Z" & Range("Z65535").End(xlUp).Row), Type:= _
xlFillDefault
End With
Diesmal habe ich es nach deiner Methode Franz umgestellt. Leider keinen Schimmer warum es nicht geht. :-(
Anzeige
AW: Select-Methode Laufzeitfehler 1004
02.07.2010 15:22:22
fcs
Hallo,
du hast wieder nicht alle Range durch einen vorangestelten Punkt zum in der With-Zeile genannten Tabellenblatt referenziert.
With Workbooks("Bestellreport_MSP_D.xls").Worksheets("Bestellungen 2010H")
.Range("A2:Z2").AutoFill Destination:=.Range("A65535:Z" & .Range("Z65535").End(xlUp).Row), Type: _
= _
xlFillDefault
End With

Gruß
Franz
AW: Select-Methode Laufzeitfehler 1004
02.07.2010 16:36:26
grossermanitu
Danke jetzt habe ich es endlich verstanden. Danke Franz und schönes Wochenende

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige