Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
676to680
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
676to680
676to680
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Range verursacht Fehler - Help!

Range verursacht Fehler - Help!
07.10.2005 16:11:23
Maddin
Hallo!
Ich habe folgendes Problem:
beim Ausführen des VBA erscheint der Fehler 1004, wenn der Range-Befehl ausgeführt werden soll. Wer weiß Rat? Ich denke, das Programm ist selbsterklärend. Dateiname "main.xls"
Danke und schönes WE!
Maddin
Sub zusammen()

Windows("main.xls").Activate
Workbooks.Add
Sheets("Tabelle1").Name = "Bereich1"
Windows("main.xls").Activate

sFolderA = Sheets("Input").Cells(1, 1) 'Angabe Ordner
sDateiA = Cells(1, 5) & ".xls" 'Dateiname zusammensetzen, beliebig anpassbar
sFileA = sFolderA & sDateiA 'Zusammensetzen zu kompletten Pfadangaben
Workbooks.Open Filename:=sFileA, ReadOnly:=True 'Die beschriebene Datei öffnen mit Attribut "Schreibgeschützt"
Windows(sDateiA).Activate
Range(Cells(1, 1), Cells(13, 4)).Select
Selection.Copy

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range verursacht Fehler - Help!
07.10.2005 17:19:40
Erich
Hallo Maddin,
wo steht deine Sub?
Wenn sie im Klassenmodul der Mappe oder einer Tabelle steht, gibt es einen Fehler:
Select kann nur im jeweils aktiven Blatt ausgeführt werden. In deinem Code steht nur "Range(...).Select - in einem Klassenmodul einer Tabelle bedeutet das immer einen Zugriff auf die Tabelle, zu der der Code gehört.
Warum überhaupt "Select"? Warum nicht
ActiveSheet. Range(Cells(1, 1), Cells(13, 4)).Copy
Die Zeile "Windows(sDateiA).Activate" ist überflüssig (die gerade geöffnete Mappe ist die aktive Mappe) und kann zu Preoblemen führen, etwa wenn in Cells(1, 5) der Dateiname nicht ganz korrekt bzgl. Groß-/Kleinschreibung angegeben ist.
Noch eine Frage:
Wie kommst du später wieder an die Mappe, die du am Anfang mit "Workbooks.Add" angelegt hast? Warum legst du sie überhaupt an dieser Stelle schon an - sie wird doch wohl erst später gebraucht?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Range verursacht Fehler - Help!
07.10.2005 19:41:39
Ralf
Hallo Maddin,
Du aktivierst das Workbook sDateiA aber kein Arbeitsblatt. Das bedeutet, Du musst Dir in sDateiA noch ein Sheet auswählen.
Ciao, Ralf
AW: Range verursacht Fehler - Help!
07.10.2005 20:43:30
Erich
Hallo Ralf und Maddin,
das mit dem Sheet auswählen in sDateiA sehe ich im Prinzip auch so, das sollte man tun,
etwa mit
Worksheets(1).Range(Cells(1, 1), Cells(13, 4)).Copy
oder
Worksheets("xyz").Range(Cells(1, 1), Cells(13, 4)).Copy
Notwendig ist es nicht unbedingt - es wird dann einfach das jeweils aktive Blatt verwendet. Vielleicht hat sDateiA ja auch nur ein Blatt.
Grüße von Erich aus Kamp-Lintfort
AW: Range verursacht Fehler - Help!
10.10.2005 09:41:56
Maddin
Guten Morgen!
Danke für die prompten Antowrten!!
@Erich:
das Sub war tatsächlich in einem Modul untergebracht. Ich werde es im Code eines Formular hinterlegen. In der Ablage in einem Modul habe ich mich an einem Kollegen orientiert, bei ihm klappt das problemlos.
Ich werde auch den Copy-Befehl einbauen, das verkürzt den Code.
Wie ich später an das neu angelegte Workbook komme, überlege ich auch schon. Eine Überlegung war, dass ich die Datei zwischenspeichere und mir über den Dateinamen Zugriff verschaffe. Gibt es da einen Trick?
@Ralf:
stimmt, da aktiviere ich nur das Workbook, aber sDateiA hat nur ein Blatt - zumindest bei meinem Prototyp. Aber ich weiß nicht, ob es später auch nur ein Blatt haben wird...
Danke an euch beide,
Grüße aus Frankfurt
Anzeige
AW: Range verursacht Fehler - Help!
10.10.2005 10:29:59
Maddin
@ Erich
Kurzer Nachtrag zu eben: an die Mappe, die ich angelegt habe, komme ich später so wieder zurück:
Workbooks.Add
sNameNew = ActiveWorkbook.Name
Später dann einfach Windows(sNameNew).Activate
Gruß, Maddin
AW: Range verursacht Fehler - Help!
10.10.2005 16:08:27
Erich
Hallo Maddin,
falls du magst, noch ein Tipp zu "sNameNew = ActiveWorkbook.Name":
So wie du es vorhast, klappt der Zugriff auf die neue Mappe - bis zum Speichern, dann ändert sich auch die Bezeichnung des Fensters.
Der Mappenname ist nach dem Anlegen etwa "Mappe2" (kann aber auch "Tabelle3" sein, wenn die Mappe nur mit einem Blatt angelegt wird).
Einfacher ist es, wenn du dir für die neue Mappe ein Workbook-Objekt anlegst (statt "wbEtwas" könntest du noch einen sprechenderen Namen vergeben):

Sub tst()
Dim wbEtwas As Workbook
Set wbEtwas = Workbooks.Add(xlWBATWorksheet)  ' damit hat die Mappe nur 1 Blatt
ActiveSheet.Name = "Bereich1"
' weiterer Code ...
'  Kopieren in die neue Mappe:
Worksheets("xyz").Range(Cells(1, 1), Cells(13, 4)).Copy _
Destination:=wbEtwas.Sheets(1).Cells(2, 1)
' oder aktivieren
wbEtwas.Activate
' oder speichern
wbEtwas.SaveAs "c:\exc\abc.xls"
' oder schließen
wbEtwas.Close
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige