Error - VBA Objekt unterstützt diese Eigenschaft oder Methode nicht
Ich bin neu in Codierung und versuche, führen Sie die folgenden;
Tracking-Arbeitsmappe enthält Informationen zum Projekt, die aus einer Eingabe-Arbeitsmappe. Ich bin versucht, öffnen Sie die input-Arbeitsmappe) kopieren Sie alle Daten auf den Projekt-info-Blatt und in der Vergangenheit es in der tracking-Arbeitsmappe " Projekt-info-Blatt.Hier ist meine Programmierung unter
Sub GetProjectInfo()
Workbooks.Open Filename:="\\ccprd02\workgrp2\AM\SPIM Input.xlsm"
ActiveSheet("Project Info").Select
Cells.Select
Selection.Copy
Windows("SPIM Tracking Sheet.xlsm").Activate
ActiveSheet("Project Info").Select
Cells.Select
Range("A1").Activate
ActiveSheet.Paste
Range("A1").Select
Windows("SPIM Input.xlsm").Activate
ActiveWindow.Close
End Sub
Ist es die Datei öffnen ok, aber dann scheint halt einfach vor dem kopieren der Daten. Ich kann nicht scheinen, Sie zu lokalisieren Sie den Fehler. Ich habe gesucht, einige threads mit ähnlichen Fragen, aber habe nicht hatte kein Glück. Gibt es etwas falsch mit meiner Codierung?
- Qualifizieren Sie Ihre Objekte mit
set
. - Welche Objekte? Der ganze sub ist, basierend auf Wählen Sie, und Aktivieren ActiveWorkbook.
- Arbeitsmappen, Blättern und Zellen sind nicht Objekte?
- Nur, wenn Sie vars wurden gedimmt als Arbeitsblatt-Typ oder-Bereich geben und dann müssen Sie
Set
um ein Arbeitsblatt oder einen Bereich von Zellen. - Enrico, siehe Wie zu verwenden Wählen Sie in der Excel-VBA-Makros für Methoden, die auf immer Weg von sich auf auswählen und aktivieren, um Ihre Ziele zu erreichen.
- Ooooh. Ich sehe das, was du jetzt meinst. Die variable ist das Objekt.
- die
Set
- Schlüsselwort verwendet wird, die für die Zuordnung. Es ist keine Zuweisung in diesem code. (Der Zuweisungsoperator ist=
, die wird überhaupt nicht angezeigt.) - Heh. Ich habe nie hielt es ein zwei-Schritt Prozess, aber es macht Sinn, es ist.
- es ist nicht so, dass die variable das Objekt. Eine Arbeitsmappe / Arbeitsblatt / Zelle ist immer ein Objekt. Allerdings, die einzige Zeit, die Sie verwenden würden
Set
ist, wenn Sie möchten, ordnen Sie ein Objekt einer Variablen des gleichen Objekttyps. edit - vielleicht haben Sie es schon verstanden, aber dachte, es war es Wert, dass klare, basierend auf Ihren vorherigen Kommentar - Scott ' s besser Ausdrücken als Jeeped /me versteckt Edit: die Aufklärung ist groß. Es ist keine Unterscheidung, die ich jemals wirklich nachgedacht wird.
- Vielen Dank Euch allen! Es funktioniert jetzt. Sehr geschätzt!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem mit Ihrem code in der zweiten Zeile.
Diese sein sollte,
Wie bereits in meinem Kommentar, siehe Wie zu verwenden Wählen Sie in der Excel-VBA-Makros weitere Methoden auf immer Weg von sich auf auswählen und aktivieren, um Ihre Ziele zu erreichen. Die ActiveWorkbook-Eigenschaft, - Anwendung.ActiveWindow-Eigenschaft, ActiveSheet-Eigenschaft und ActiveCell-Eigenschaft sind einfach keine zuverlässigen Methoden der referrencing.
Beim schreiben von VBA-code, Sie sind am besten gedient, indem Sie sich alle Objekte mit Variablen und arbeiten direkt mit den Objekten selbst.
Versuchen Sie dies:
Ich Frage mich auch, wenn Sie wirklich wollen, zu kopieren jede Zelle des Arbeitsblattes oder willst du einfach nur kopieren von Zellen mit tatsächlichen Daten?
Wenn Sie wollen einfach nur die Zellen mit den tatsächlichen Daten, die Sie verwenden können
wsC.UsedRange.Copy wsP.Range("A1")
Hinweis - das könnte Probleme haben, aber ich werde Sie mir sagen, ob es funktioniert 🙂