簡體   English   中英

使用Range類在VBA中創建宏時出現運行時錯誤1004

[英]I am getting Runtime error 1004 when using Range class for creating a macro in VBA

我正在嘗試在Excel中自動執行一份報告。 我從創建宏開始。 在宏的某一點上,我正在使用變量將一行從AZ2復制到CJ2,每個單元格都有公式,我想將相同的公式從AZ3粘貼到AZ248000。 我收到此代碼Wb1.Sheets(“ Gains Data”)。Range(Cells(row3,Col1),Cells(Row2,Col1))。Select的錯誤

我已經嘗試過在線提供的許多示例和解決方案,從自動填充開始,也嘗試僅粘貼公式。 我嘗試根據在線出現的類似問題建議激活文件,工作表,工作表。 沒事。 請檢查我的代碼並提出解決方案。 PS-在此代碼之前,有一堆代碼是我將數據從不同的工作簿Wb2復制到主要的Wb1上的地方。

   Dim Row1 As Long
   Dim Row2 As Long
   Dim row3 As Long
   Dim Col1 As String
   Dim Col2 As String

   Wb1.Worksheets("Gains Data").Range("AY2").Select
   Selection.End(xlDown).Select
   Row2 = ActiveCell.Row

 ' Wb1.Worksheets("Gains Data").Range("AZ2").Select
       ' Selection.End(xlToRight).Select
    ' Col2 = ActiveCell.Column


Wb1.Worksheets("Gains Data").Range("AZ2").Select
Row1 = ActiveCell.Row
row3 = Row1 + 1
Col1 = ActiveCell.Column
Wb1.Worksheets("Gains Data").Range(Selection, 
Selection.End(xlToRight)).Select
'Col2 = ActiveCell.Column
Selection.Copy
'Windows("Gains SOP Forecast Comparison 2019 07.xlsb").Activate
 Wb1.Sheets("Gains Data").Activate

'Range("O1:X1").Select

'Selection.AutoFill Destination:=Range(Col1 & Row1 & ":" & Col2 & Row2), 
  Type:=xlFillDefault

'Range("BA3:B" & LastRow1 & ":" & "CJ3:CJ" & LastRow1).Formula=

 'Cells(Col1 & Row1 & ":" & Col2 & Row2).Paste
 'Sheets("Gains Data").Range(Col1 & row3 & ":" & Col1 & Row2).Select
 Wb1.Sheets("Gains Data").Range(Cells(row3, Col1), Cells(Row2, 
 Col1)).Select
  ActiveSheet.Paste  ' Copies the formulas from BA to CJ for all rows

應根據我存儲在row2變量中的Wb2的行數將公式復制到所有行。

如果需要將數據從一個工作簿復制到另一個工作簿,請嘗試以下代碼:

Sub Copy_Between_Workbook()
Dim wb_path$
Dim wb1, wb2
Dim i, j

wb_path = ThisWorkbook.Path    'Path of workbook
myfile1 = "workbook1.xlsx"
myfile2 = "workbook2.xlsx"
mysheet = "Sheet1"
'Original workbook
Set wb1 = CreateObject(wb_path & "\" & myfile1)
'Target workbook
Set wb2 = CreateObject(wb_path & "\" & myfile2)
'attend: wb1.sheet1 is not work, must be wb1.sheets("xxx")
wb1.Sheets(mysheet).UsedRange.Copy wb2.Sheets(mysheet).Range("A1")

wb1.Close False
wb2.Close True

'Out cut mode
Application.CutCopyMode = False
Debug.Print Timer
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM