Excel VBA - 在函数范围内使用变量

时间:2014-09-09 15:13:34

标签: excel vba excel-vba

我使用函数设置变量:

Dim LastMemRow As Integer
Dim FLAGFileNo As Integer
Dim MemNoRow As Integer

MemNoRow = WorksheetFunction.Match(FLAGFileNo, Workbooks(TalkRegTempFile).Worksheets("Setup Sheet").Range("A1", "A2000"), 0)

哪种方法有效,但是我想要更换" A2000"使用变量LastMemRow(之前由某些早期代码设置),以便Match仅搜索目标工作表的col A中最后使用的行。我试过这个:

MemNoRow = WorksheetFunction.Match(FLAGFileNo, Workbooks(TalkRegTempFile).Worksheets("Setup Sheet").Range(Cells(1, 1), Cells(1, LastMemRow)), 0)

虽然FLAGFileNo和LastMemRow变量包含期望值,但MemNoRow始终为0.

也许我不能在工作表函数中以这种方式使用Cell? (Excel 2010)

3 个答案:

答案 0 :(得分:2)

使用LastMemRow代替2000连接字符串,而不是使用可能引用或不引用错误工作表的.Range(Cells(1,1), Cells(1, LastMemRow))

MemNoRow = WorksheetFunction.Match(FLAGFileNo, Workbooks(TalkRegTempFile).Worksheets("Setup Sheet").Range("A1", "A" & LastMemRow), 0)

答案 1 :(得分:0)

尝试:

MemNoRow = WorksheetFunction.Match(FLAGFileNo, Workbooks(TalkRegTempFile).Worksheets("Setup Sheet").Range("A1", Cells(1, LastMemRow).AddressLocal), 0)

如果第一个代码有效,那也应该这样做。让我知道。

答案 2 :(得分:0)

如果有人有兴趣,这可行:

MemNoRow = WorksheetFunction.Match(FLAGFileNo, Workbooks(TalkRegTempFile).Worksheets("Setup   Sheet").Range("A1", "A" & CStr(LastMemRow)), 0)

即。在原来的帖子中使用“A”而不是“A2000”。 CStr(LastMemRow),最后一位将LastMemRow整数变量转换为字符串。

感谢您的回复,指出了我正确的方向。