【发布时间】:2016-06-08 02:08:37
【问题描述】:
我构建了一堆 VBA 代码(经过全面测试,似乎可以正常工作),其中包括诸如
之类的行worker = WorksheetFunction.Match(Sheets("workerlist").Range("A1"), Sheets("master").Range("A1:A20"), 0)
我正在尝试通过按索引号引用工作表来改进我的代码,因此我将 Sheets("workerlist") 替换为 Sheets(1),然后线路中断并返回运行时错误,指出无法获取 WorksheetFunction 的 Match 属性类。
两者不能一起工作吗?还有其他方法可以改善我的参考吗?当我尝试查找问题时,我总是以使用WorksheetFunction.Index 的页面结束。
【问题讨论】:
-
为什么你认为使用索引号比工作表名称更好?
-
我正在将工作簿发布给一群相当文盲的人,因此我正在努力减少可能出现的问题的数量。如果他们重命名我的工作表,索引号至少可以让这本书继续工作
-
但是如果他们移动它们就会损坏。使用代号会更安全。错误的最可能原因是 Sheets(1) 与 Sheets("workerlist") 不同,这就是现在匹配失败的原因。
-
那个...这实际上是我打算做的。为什么 Match 会完全失败而不是返回 null 呢?从错误来看,VBA 似乎找不到 Match 函数本身。
标签: excel excel-formula vba