2017-02-25 208 views
0

我有一個.Match函數的問題。如果我用引號和字母(「A:A」)在裏面設置了一個範圍,它會很好。但是,當我嘗試用變量設置它時,會出現1004錯誤。VBA匹配變量範圍

這工作:

a = WorksheetFunction.Match(Range("A1"), Sheets("Data").Range("A:A"), 0) 

這不起作用:

a = WorksheetFunction.Match(Range("A2"), Sheets("Data").Range(Cells(a, 4), Cells(a + 5, 4)), 0) 

如何設定變量範圍在.Match功能?

回答

2

您必須使用完全合格(最多worksheet對象)range引用,否則默認爲當前「活動」表

a = WorksheetFunction.Match(Range("A2"), Sheets("Data").Range(Sheets("Data").Cells(a, 4), Sheets("Data").Cells(a + 5, 4)), 0) 
+0

但是我有一個變量範圍,所以有可能找到另一種方式來設置它的單元格屬性,可能是? –

+2

這是發佈問題的不同問題,不是嗎?如果是這樣,那麼做一個新的職位。與此同時,如果它解決了你的_original_問題,你可能想要接受答案。謝謝 – user3598756

+0

@GasiakA。 - 如果你有一個變量範圍,改變變量'a'的值(或者改變硬編碼的'5'和'4'是變量,如果它們是需要改變的位) – YowE3K

1

您可能會發現它更容易使用調整大小()的位置:

a = WorksheetFunction.Match(Range("A2"), _ 
          Sheets("Data").Cells(a, 4).Resize(6, 1), 0)