Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 0
  • 1

Witam wszystkich.

Przychodzę z problemem dotyczącym AutoFill'a.

Metoda odmawia mi posłuszeństwa przy operowaniu na zdefiniowanych w zmiennych zakresach. Przy wykonaniu kompilator wypluwa 1004. Nadmienię, że przy innych operacjach na tych samych zakresach wszystko działa jak powinno.

Poniżej mój kod:

Dim FormulasWB As Workbook, ReportWB As Workbook
Dim FormulasWS As Worksheet
Dim NewCols As Range, OldCols As Range, LastColCell As Range

Set FormulasWB = ActiveWorkbook
Set FormulasWS = FormulasWB.Worksheets(1)
Set LastColCell = FormulasWS.Cells.Find("FIRMA")

LastColCell.EntireColumn.Insert
LastColCell.EntireColumn.Insert

Set NewCols = FormulasWS.Range(FormulasWS.Cells(1, LastColCell.Column - 2), FormulasWS.Cells(LastColCell.End(xlDown).Row, LastColCell.Column - 1))
Set OldCols = FormulasWS.Range(FormulasWS.Cells(1, LastColCell.Column - 4), FormulasWS.Cells(LastColCell.End(xlDown).Row, LastColCell.Column - 3))

OldCols.AutoFill Destination:=NewCols, Type:=xlFillSeries ' Ta linijka daje błąd 1004

Czemu metoda AutoFill mnie nie kocha? :(

Wojciech_Bolechowski
  • Zapytał
  • @ Wojciech_Bolechowski | 26.07.2017
    • 1
    • 0
    • 0
Zaloguj się aby zadać pytanie
Pokrewne

Odpowiedź (1)

  • 0

Wydaje mi się, że ta metoda musi mieć w obszarze docelowym uwzględnione źródło, czyli:

Set FormulasWB = ActiveWorkbook
Set FormulasWS = FormulasWB.Worksheets(1)
Set LastColCell = FormulasWS.Cells.Find("FIRMA")

LastColCell.EntireColumn.Resize(, 2).Insert 'jeden wiersz kodu do przodu :)

With FormulasWS 'troszkę czytelniej będzie
   Set NewCols = .Range(.Cells(1, LastColCell.Column - 4), .Cells(LastColCell.End(xlDown).Row, LastColCell.Column - 1))
   Set OldCols = .Range(.Cells(1, LastColCell.Column - 4), .Cells(LastColCell.End(xlDown).Row, LastColCell.Column - 3))
End With

OldCols.AutoFill Destination:=NewCols, Type:=xlFillSeries

Alternatywnie, powinna też zadziałać drobna poprawka w ostatniej linijce Twojego skryptu:

OldCols.AutoFill Destination:=Union(OldCols, NewCols), Type:=xlFillSeries

 

Mirosław_Janiak
  • Odpowiedział
  • @ Mirosław_Janiak | 26.07.2017
    • 1
    • 7
    • 1