gpt4 book ai didi

excel - 非 ActiveX 滚动条更改事件?

转载 作者:行者123 更新时间:2023-12-04 21:56:33 26 4
gpt4 key购买 nike

我正在使用现代 Excel 滚动条(不是旧的 ActiveX 类型,即开发人员 > 插入 > 表单控件 > 滚动条)并且想检测它的值何时更改。我找不到有关此类对象的更改事件的任何信息。您可以在单击时分配一个宏,但我希望我的代码在滚动时运行。

我尝试将其链接到隐藏工作表上的单元格并使用隐藏工作表的工作表更改事件,但该事件不会触发。我也尝试过 Workbook_SheetChange 事件但没有成功。

如何模拟非 ActiveX 滚动条的 On_Scroll 事件?谢谢。

最佳答案

因此,您按照您描述的菜单路径(开发人员>插入>表单控件>滚动条),您可以将滚动条“绘制”到电子表格上。然后右键单击滚动条并选择“分配宏”:

enter image description here

请注意,滚动条在左上角有一个名称 - “滚动条 1”。将建议一个宏名称 - 您可以留下它,然后单击“新建”:

enter image description here

现在您可以编写 VBA 代码了。真的不清楚最佳实践是什么然后获取对该特定滚动条对象的引用。我在下面完成的方法是:

  • 鉴于滚动条是 Shape以及一个表单控件,我们可以从 Application.Caller 获得它的名称
  • 迭代 ScrollBars Worksheet 的成员类,直到我们得到一个匹配的对象
  • 获取 Value对象的属性以获取滚动条中拇指的当前位置

  • 请注意,此 ScrollBars Worksheet 的成员类是“隐藏的”,如果您进入 VBE 对象浏览器,您可以看到它,右键单击“搜索结果”并选择“显示隐藏的成员”,然后搜索 ScrollBars .当你用谷歌搜索时,几乎没有可用的内容,因为很明显,排名较高的搜索都是关于 Excel 中的常规滚动条,或者你将在 UserForm 中使用的滚动条。或者其他的东西。无论如何,对我有用的代码是:
    Option Explicit

    Sub ScrollBar1_Change()

    Dim strCaller As String
    Dim objScrollBar As Object
    Dim dblScrollValue As Double

    ' the scroll bar has a shape - so you can get the shape name
    strCaller = Application.Caller

    ' iterate hidden scrollbars member of worksheet class to get the object
    For Each objScrollBar In Sheet1.ScrollBars
    If objScrollBar.Name = strCaller Then
    Exit For
    End If
    Next

    ' get the scroll bar value
    dblScrollValue = objScrollBar.Value

    ' do something with the value
    MsgBox dblScrollValue

    End Sub

    关于excel - 非 ActiveX 滚动条更改事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43693670/

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