用于复制数组值的“Object Required”错误

我有错误信息

所需对象

hostname(X, 1).Copy

我已经使用msgbox来testing这一行,可以find这个数组的主机名,但只是这行代码有错误信息。 此数组值的主机名是W01GOPTIMAPP1A。

相关的代码是

 wSlastRow = .Range("B" & .Rows.Count).End(xlUp).Row hostname = WintelSheet.Range("B1:B" & wSlastRow).Value2 '// Now Loop through each row For X = 2 To wSlastRow If Not IsError(.Range("AI" & X).Value) Then If IsDate(.Range("AI" & X)) Then '//Calculate the last day of the month for dates in Column W (dtStart) and first day of the next current month (dtFinal) dtStart = DateSerial(Year(.Range("AI" & X)), Month(.Range("AI" & X)) + 1, 1) dtFinal = DateSerial(Year(Now), Month(Now) + 1, 1) With AparSheet .AutoFilterMode = False With .Range("J:L") .Columns(3).AutoFilter field:=1, Criteria1:=">=" & dtStart, _ Operator:=xlAnd, Criteria2:="<" & dtFinal With .Resize(.Rows.Count - 1, 1).Offset(1, 0) NumberOfPasteRows = .Rows(.Rows.Count).End(xlUp).Row If CBool(Application.Subtotal(103, .Columns(1))) Then .EntireRow.Copy Destination:=GeneratedSheet.Rows(wSLastPasteRow & ":" & (wSLastPasteRow + NumberOfPasteRows - 1)) hostname(X, 1).Copy GeneratedSheet.Range("B" & wSLastPasteRow).Resize(NumberOfPasteRows - 1).PasteSpecial xlPasteValues wSLastPasteRow = wSLastPasteRow + NumberOfPasteRows - 1 End If End With End With End With End If End If Next X 

发布的代码是不完整的,但基于行为“hostname”被声明为Variant,或者它是一个Variant,如果它没有声明

当你执行这个操作时, hostname = WintelSheet.Range("B1:B" & wSlastRow).Value2你将Range对象的值赋给Variant(数组)

Range对象有一个名为“.Copy”的方法,Variant没有

编辑:

为了能够从hostname复制声明它作为一个Range对象:

 Dim hostname As Range Set hostname = WintelSheet.Range("B1:B" & wSlastRow) hostname(x, 1).Copy 

或者简单地使用范围本身:

 WintelSheet.Range("B" & wSlastRow).Copy