gpt4 book ai didi

excel - Shape.OnAction 在复制工作簿后导致错误的工作表名称中不包含下划线

转载 作者:行者123 更新时间:2023-12-04 13:06:55 24 4
gpt4 key购买 nike

我有一本工作簿,用作其他人的模板。模板文档已锁定以供编辑,因此最终用户必须使用其项目的具体信息“另存为”。

此模板包括多个工作表以合并所有可能的布局选项。由于与我一起工作的大多数人既没有经验也不熟悉 Excel,因此我隐藏了所有工作表。他们首先导航到 BASE_Start 工作表,在其中输入关键信息以确定应根据项目需要取消隐藏哪些工作表。输入关键信息后,用户单击使用宏 (BaseTabSelection) 的激活按钮(表单控件)取消隐藏当前项目所需的工作表。

当用户尝试使用新保存的工作簿中的激活按钮时,它仍然引用模板工作簿。为了纠正这个问题,我添加了以下子项(我没有编译):

Private Sub Worksheet_Activate()
Call ShapeUpdate
End Sub
Private Sub ShapeUpdate()
Dim Shp As Shape
Dim MacroLink As String
Dim SplitLink As Variant
Dim NewLink As String

For Each Shp In ActiveSheet.Shapes
MacroLink = Shp.OnAction
If MacroLink <> "" And InStr(MacroLink, "!") <> 0 Then
SplitLink = Split(MacroLink, "!")
NewLink = SplitLink(1)
If Right(NewLink, 1) = "'" Then NewLink = Left(NewLink, Len(NewLink) - 1)
End If
Next Shp

End Sub

我已在许多其他工作簿中成功使用此代码,但在本工作簿中未按预期工作。带有 Activate 按钮的工作表名称包含下划线 BASE_Start,但下划线不包含在使用 分配的 MacroLink 变量中>Shp.OnActionCode and watch window showing MacroLink was assigned using incorrect tab name

预期的 MacroLink 变量值:[ActiveWorkbook]!BASE_Start.BaseTabSelection
实际的 MacroLink 变量值:[ActiveWorkbook]!BASEStart.BaseTabSelection

有谁知道为什么在这种情况下工作表名称中的下划线会被忽略/删除?

我已经能够使用下面的代码创建一个解决方法来添加下划线。但是,此解决方案仅限于此工作簿,因为工作表名称已知且不应更改。

If InStr(NewLink, "BASEStart") Then NewLink = Replace(NewLink, "BASEStart", "BASE_Start")

最佳答案

The expected MacroLink variable value: [ActiveWorkbook]!BASE_Start.BaseTabSelectionThe actual MacroLink variable value: [ActiveWorkbook]!BASEStart.BaseTabSelection

当工作表名称和代码名称不同时,通常会发生这种情况。我相信 BASE_Start 是您的工作表名称,工作表的代码名称是 BASEStart

enter image description here

转到 VBE 并从那里更改工作表代号,然后再试一次:)

我相信这与您现在看到的类似。

enter image description here

从这里改变

enter image description here

关于excel - Shape.OnAction 在复制工作簿后导致错误的工作表名称中不包含下划线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69006875/

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