Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用工作表索引后是否中断工作表功能?_Excel_Excel Formula_Vba - Fatal编程技术网

Excel 使用工作表索引后是否中断工作表功能?

Excel 使用工作表索引后是否中断工作表功能?,excel,excel-formula,vba,Excel,Excel Formula,Vba,我构建了一系列VBA代码(经过充分测试,似乎正在运行),其中包括 worker = WorksheetFunction.Match(Sheets("workerlist").Range("A1"), Sheets("master").Range("A1:A20"), 0) 我试图通过按索引号引用工作表来改进代码,因此我将工作表(“workerlist”)替换为工作表(1),该行出现故障并返回运行时错误,表示无法获取WorksheetFunction类的Match属性 这两者不能一起工作吗?有没

我构建了一系列VBA代码(经过充分测试,似乎正在运行),其中包括

worker = WorksheetFunction.Match(Sheets("workerlist").Range("A1"), Sheets("master").Range("A1:A20"), 0)
我试图通过按索引号引用工作表来改进代码,因此我将
工作表(“workerlist”)
替换为
工作表(1)
,该行出现故障并返回运行时错误,表示无法获取WorksheetFunction类的Match属性


这两者不能一起工作吗?有没有其他方法可以改进我的引用?当我试图查找问题时,我总是以使用
工作表function.Index
的页面结束。您正在创建潜在问题,而不是删除它们

如果有人将workerlist工作表从第一个位置移动,则代码将被破坏。这类似于如果有人重命名workerlist工作表,在当前代码中会发生的情况

如果要减少潜在问题,请使用工作表。虽然有可能有人可以重命名代码名,但他们甚至不可能找到在哪里进行重命名。这当然比双击工作表的选项卡并重新键入工作表或将工作表拖动到队列中的新位置要复杂得多。更改工作表的。代号是一种非常有意的行为

我更喜欢使用的版本。这与调用的不同。使用
Application.Match(…,…,0)
可以捕获带有变量的错误

dim worker as variant
worker = application.Match(Sheets("workerlist").Range("A1"), Sheets("master").Range("A1:A20"), 0)
if IsError(worker) then
    'no match found; worker is Error 2042
else
    'match found; worker is a row number
end if

为什么你认为使用索引编号比使用工作表名称更好?我正在向一群文盲发布工作簿,所以我试图减少可能出现的问题。如果他们重新命名了我的工作表,索引号至少可以让这本书继续工作,但如果他们移动了,索引号就会断开。使用代码名会更安全。错误最可能的原因是工作表(1)与工作表(“工作列表”)不同,这就是为什么匹配现在失败的原因。这。。。这就是我打算做的。为什么匹配会完全失败,而不是返回空值?从错误来看,VBA似乎找不到匹配函数本身。是的,这正是我想要的。我被困在试图找出问题是什么,我没有意识到我使用了错误的东西开始。在Rory指出后,它开始工作了!感谢你们两位的帮助。请参阅附录中的备选方案。哦,错误处理!这是我第一次尝试为其他人编写代码,所以所有这些错误预防对我来说都是新的。那肯定很方便,谢谢!