2017-09-19 59 views
1

我想從一個工作簿中獲取一個小的數據矩陣,並使用單元格引用的偏移量將其粘貼到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 
+2

Wherecell是一個範圍已經不包含它在'Range()'看到我的答案在這裏更多的解釋:https://stackoverflow.com/questions/46302871/relationship-between-cell-and-range -in-vba-with-activecell/46303014#46303014 –

回答

3

嘗試這樣的:

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 

。它會顯示其工作表,即時窗口中的應用程序名稱和地址。因此,它已經「知道」它們,如果你試圖「重新聲明」它們,你會得到一個錯誤。

+0

我似乎沒有得到任何與Debug.Print語句。輸出格式是什麼? –

+0

@RichPrag - 按「Ctrl + G」輸出將在直接窗口中。 – Vityata

+0

啊,是的,謝謝。 –

相關問題