VBA试图使用range.offset与一个命名变量中的单元格地址
问题描述:
我想从一个工作簿中获取一个小的数据矩阵,并使用单元格引用的偏移量将其粘贴到ThisWorkbook中。虽然我正在循环查找值的范围,但单元格引用更改。我设置的名为'WhereCell'的变量保存当前保存的值的地址,并且我想偏离WhereCell中的任何值。它工作,如果我硬编码单元格引用,如范围(“A1”),但代码,因为它是我得到一个1004:对象'_Global'的方法'范围'失败。VBA试图使用range.offset与一个命名变量中的单元格地址
我该如何改变它以抵消'WhereCell'?
Sub GetFlows()
Dim rng As Range
Dim row As Range
Dim cell As Range
Dim dem1 As String
Dim WhereCell As Range
Dim valueRng As Range
Dim x As Long
Dim y As Long
Set rng = Range("A9:A200")
For x = 1 To rng.Rows.Count
dem1 = rng.Cells(x).Value
If dem1 <> "" Then
Set WhereCell = ThisWorkbook.ActiveSheet.Range("A9:A200").Find(dem1, lookat:=xlPart)
Windows("GetFilenames v2.xlsm").Activate
Worksheets(dem1).Range("A1").CurrentRegion.Copy
ThisWorkbook.ActiveSheet.Range(Range(WhereCell), Range(WhereCell).Offset(, 2)).PasteSpecial Paste:=xlPasteValues
'MsgBox dem1
'If Not WhereCell Is Nothing Then
'MsgBox WhereCell.Address
'End If
Else
ThisWorkbook.Activate
End If
Next x
End Sub
答
尝试这样的:
WhereCell.Offset(0, 2)).PasteSpecial Paste:=xlPasteValues
,而不是这样的:
ThisWorkbook.ActiveSheet.Range(Range(WhereCell), Range(WhereCell).Offset(, 2)).PasteSpec...
要了解更多关于WhereCell
,考虑宣布之后写
Debug.Print WhereCell.Parent.Name
Debug.Print WhereCell.Parent.Parent.Name
Debug.Print WhereCell.Address
。它会显示其工作表,即时窗口中的应用程序名称和地址。因此,它已经“知道”它们,如果你试图“重新声明”它们,你会得到一个错误。
Wherecell是一个范围已经不包含它在'Range()'看到我的答案在这里更多的解释:https://stackoverflow.com/questions/46302871/relationship-between-cell-and-range -in-vba-with-activecell/46303014#46303014 –