用于复制数组值的“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