Frage

Der folgende VBA-Code (Excel 2007) mit Fehlern Fehler 1004 "Autofill-Methode der Range-Klasse ist fehlgeschlagen.". Kann mir jemand sagen, wie man es beheben?

Dim src As Range, out As Range, wks As Worksheet

Set wks = Me
Set out = wks.Range("B:U")
Set src = wks.Range("A6")
src.AutoFill Destination:=out

(Anmerkung:. Ich habe gegoogelt, etc. für diese Es kommt ziemlich oft, aber alle Antworten, die ich sehe mit ungültigen Adressen Bereich zu tun hatten, die AFAIK nicht mein Problem ist,

.

Bei jemandes Vorschlag, den ich versuchte, die Autofill-Linie mit dem folgenden zu ersetzen:

src.Copy out

Dies hatte den Effekt des Werfens meine Excel-Sitzung in einer scheinbaren Endlos-Schleife 100% CPU raubend und dann einfach hängen für immer.


OK, hat offenbar die Quelle Teil des Zielbereichs für Autofill sein. Also mein Code sieht nun wie folgt aus:

Dim src As Range, out As Range, wks As Worksheet

Set wks = Me
Set out = wks.Range("B1")
Set src = wks.Range("A6")
src.Copy out

Set out = wks.Range("B:U")
Set src = wks.Range("B1")
src.AutoFill Destination:=out, Type:=xlFillCopy

Die gleiche Fehler in der letzten Zeile.

War es hilfreich?

Lösung

MSDN :

  

Das Ziel muss die include   Quellbereich.

B:U nicht A6 enthalten und somit gibt es einen Fehler. Ich glaube, dass Sie wahrscheinlich out werden auf A6:U6 wollen.

Einzelheiten enthält nur die Spaltennamen bedeutet, dass Sie jede Zeile in dieser Spalte füllen wollen, die es unwahrscheinlich ist, die gewünschte behvaiour sein


Aktualisieren

Im Anschluss an die Bemerkung des OP unten und Update auf die ursprüngliche Antwort, dies könnte den Trick tun:

Dim src As Range, out As Range, wks As Worksheet

Set wks = Me
Set out = wks.Range("B1")
Set src = wks.Range("A6")
src.Copy out

Set out = wks.Range("B1:U1")
Set src = wks.Range("B1")
src.AutoFill Destination:=out, Type:=xlFillCopy

Set out = wks.Range("B:U")
Set src = wks.Range("B1:U1")
src.AutoFill Destination:=out, Type:=xlFillCopy

AutoFill wird auf eine einzige Richtung beschränkt (das heißt horizontal oder vertikal) auf einmal. Um einen zweidimensionalen Bereich aus einer einzigen Zelle zu füllen Sie zuerst haben Auto-füllen Sie eine Linie entlang einer Kante dieser Fläche und dann über den Bereich dieser Linie strecken

Für den speziellen Fall des Kopierens der Formatierung und Löschen der Inhalte (aufgrund der Quellenzelle leer ist), ist dies besser:

Dim src As Range, out As Range, wks As Worksheet

Set wks = Sheet1
Set out = wks.Range("B:U")
Set src = wks.Range("A6")
src.Copy out

Andere Tipps

Um AutoFill Arbeit zu machen, müssen Sie den Bereich der AutoFill machen mehr als die Quellbereich . Wenn das automatische Ausfüllen Bereich gleich wie der Quellbereich ist, dann gibt es nichts zu AutoFill in diesem Bereich und damit würden Sie einen Fehler

  

1004:. AutoFill-Methode der Range-Klasse ist fehlgeschlagen

So stellen Sie die automatische Ausfüllen reicht mehr als den Quellbereich und Fehler verschwunden.

Wenn Sie einfach so etwas wie ...

Autofill wollen
Private Sub Autofill()

'Select the cell which has the value you want to autofill
Range("Q2").Select

'Do an autofill down to the amount of values returned by the update
Selection.AutoFill Destination:=Range("Q2:Q10")

End Sub

Dies würde Autofill an den angegebenen Bereich nach unten.

Does ths Hilfe?

Nicht sicher, ob dies jemand hilft, aber ich brauchte etwas ähnliches. Die Auswahl der Zellen als Ziel Werke;

dim rowcount as integer
Sheets("IssueTemplate").Select ' Whatever your sheet is
rowcount = 0
rowcount = Application.CountA(Range("A:A"))'get end range
Cells(4, 3).Select 'select the start cell
'autofill to rowcount
Selection.AutoFill Destination:=Range("C4:C" & rowcount), Type:=xlFillDefault 

in meinem Beispiel musste ich automatisch generieren eine Liste der Ordnernamen von OA100 OA ### ?, und diese hat gut funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top