gpt4 book ai didi

vba - 声明工作表时无法使用工作表中的对象

转载 作者:行者123 更新时间:2023-12-04 21:37:34 25 4
gpt4 key购买 nike

所以以下作品

Sheet1.btnAfkeurMin.Visible = True

以下是不起作用的
Dim WS As Worksheet

For Each WS In ThisWorkbook.Worksheets
If cmbDate.Value = WS.Name Then
WS.btnAfkeurMin.Visible = True
end if
next

cmdDate.Value 和 WS.Name 相同。 (在控制台中检查)
使用 WS 时如何调用 btnAfkeurMin?

最佳答案

我怀疑这个问题是因为 btnAfkeurmin只分配一次。当您循环浏览工作表时,您需要重新引用新工作表上的新按钮。

例如,此代码将遍历每个工作表并隐藏所有名为 btnAfkeurmin 的按钮。

Option Explicit

Sub TestFormControls()

Dim WS As Worksheet

For Each WS In ThisWorkbook.Worksheets
WS.Shapes("btnAfkeurMin").Visible = msoFalse
Next WS

End Sub

适应您的代码:
Option Explicit

Sub TestFormControls()
Dim WS As Worksheet

For Each WS In ThisWorkbook.Worksheets
If cmbDate.Value = WS.Name Then
WS.Shapes("btnAfkeurMin").Visible = True
End If
Next

End Sub

如果您需要引用名为 cmbDate 的不同组合框,则适用类似的逻辑。 .如果您总是引用代码中前面声明的单个,那很好(我认为这是根据您的 cmbDate.Value = WS.Name 评估为 true 的陈述发生的情况)。

但是,如果由于某种原因,您在需要引用的每张工作表上都有不同的组合框,您可以使用以下相同的方式执行此操作:
WS.Shapes("cmbDate").Value

关于vba - 声明工作表时无法使用工作表中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31753043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com