VBA试图使用range.Offset,其中包含在命名变量中的单元格地址



我试图从一个工作簿中获取一个小数据矩阵,并使用单元格参考的偏移量将其粘贴到本工作簿中。当我骑自行车以寻找值的范围时,细胞参考会发生变化。我设置的称为" Wherecell"的变量持有当前持有的价值的地址,我想抵消Wherecell中的任何内容。如果我硬编码单元格引用,例如范围(" A1"),则可以工作,但是使用代码,我会得到1004:方法'对象'_global'的方法'范围'_global'失败。

如何更改它以抵消'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

宣布它。它将向您显示其工作表,应用程序的名称及其地址。因此,它已经"知道"他们,如果您尝试"重新列"它们,您会遇到错误。