VBA运行时错误91已经使用过SET?

时间:2018-01-10 08:46:47

标签: excel vba excel-vba

我正在

  

运行时错误'91':对象变量或未设置块变量

当我已使用set关键字时。我读了old post,其中set 用于指定对象的引用。它究竟意味着什么?

另请阅读POST A& POST B但没有多大帮助。

Dim strPath2 As String
Dim wbkWorkbook1 As Workbook
Dim wbkWorkbook2 As Workbook
Dim wbkWorksheet1 As Worksheet
Dim wbkworksheet2 As Worksheet

Dim rng As Range
Dim copyArr As Range
Dim lastcol As Integer

'define paths and filenames
strPath = "C:\Users\Account\Desktop\test.csv"

'open files
Set wbkWorkbook1 = ThisWorkbook
Set wbkWorkbook2 = Workbooks.Open(strPath)
Set wbkWorksheet1 = wbkWorkbook1.Worksheets("paste")
Set wbkworksheet2 = wbkWorkbook2.Worksheets("copy")

Dim i As Long

'Get all columns
With wbkworksheet2
    lastcol = .Cells(1, .Columns.Count).End(xlToLeft).Column
End With

Set copyArr(i) = wbkworksheet2.Cells(1, lastcol) ' Error

1 个答案:

答案 0 :(得分:0)

Set为变量分配对象引用。

  

wbworksheet2.Cells(1,lastcol)

返回一个对象Range,而不是一个数组。

此外,根据您的工作表名称,我猜您可能要复制并粘贴值,因此您可以使用类似

的内容替换最后一行
   'clear any thing on clipboard to maximize available memory 
   Application.CutCopyMode = False 

   'copy the range from source book 
   wbkworksheet2.Cells(1, lastcol).Copy 

   'paste the data on the target book 
   wbkworksheet1.Range("A1").PasteSpecial