我有以下代码:
Set b = ActiveSheet.Buttons(Application.Caller)
With b.TopLeftCell
bcn = .Column
brn = .Row
End With
大多数情况下,它都能完美运行。但是,有时在调用此方法时,返回的行号偏移+14。工作表中没有隐藏的行。 发生这种情况时,如果您将工作表打开几分钟,却什么也不做,它将重新开始工作。
正在发生什么,如何解决?还是有更好的方法获取行号?
答案 0 :(得分:0)
问题似乎是,如果您在Buttons
上保留默认名称,则很有可能会出现重复的名称,而Application.Caller
只会返回一个非唯一的名称,返回所需的正确Sheet
名称。
您可以通过使用自定义名称并使用诸如Buttons
+ SheetName
+ Button
之类的命名约定来重命名Counter
(例如:{{1} }。
希望这会有所帮助。
答案 1 :(得分:0)
之所以发生这种情况,是因为彼此之间有多个按钮。有时,背景按钮(根本不应该在那里)成为前景按钮,并且是意外行为的来源。删除重复的按钮可以解决此问题。
只有在尝试以编程方式重命名按钮时,这种情况才变得显而易见,这种现象表现为尝试为多个按钮赋予相同的名称,并提出了权限被拒绝的错误,因为该名称是基于行号和列号的。
该问题仅在每20个打开中出现大约1个,因此这不是一个引起重大关注的足够大的问题;因此为什么要花6个月才能解决。