【问题标题】:Excel VBA Scroll bar which shift sheet left or rightExcel VBA滚动条向左或向右移动工作表
【发布时间】:2012-10-17 17:53:13
【问题描述】:

请求:使用 VBA 或 ActiveX 滚动条向左或向右移动工作表的迷你滚动条的 VBA 代码?

我创建了一个培训师技能矩阵,其中列出了培训师姓名(在单元格“B7”到“B86”中)和技能学科列在顶部(在单元格 E6 到“AJ6”中)。在培训师姓名和技能相交的地方,我有一个下拉列表,其中“Y”表示有技能,“N”没有技能,“n\a”。如果该技能不适合该培训师。我已冻结标题行(在单元格 E6 到“AJ6”中)和培训师姓名(在单元格“B7”到“B86”中)以便于交叉引用

我想添加一个“迷你”水平滚动条(位于单元格 A4:B4 中),其行为与主 Excel 工作表滚动条完全相同(即向左或向右移动工作表)。我已经尝试了 ActiveX 滚动条和“Googled”解决方案超过 4 小时,但没有成功。专家 VBA 程序员或 Excel 大师能否提出解决方案或发布一些示例代码?干杯!!

Screenshot of my Trainer Skills Matrix

【问题讨论】:

  • 在您的情况下窗口拆分是否有效?这将为您提供完全相同的滚动条(我认为这是您正在寻找的,但如果不是,请抱歉:))。

标签: button excel activex scrollbar vba


【解决方案1】:

对于 ActiveX 滚动条:

'in the sheet code module
Private Sub ScrollBar1_Change()
    ActiveWindow.ScrollColumn = 4 + Me.ScrollBar1.Value
End Sub

Private Sub ScrollBar1_Scroll()
    ActiveWindow.ScrollColumn = 4 + Me.ScrollBar1.Value
End Sub

将滚动条的最小值设置为 1,将最大值设置为您拥有的列数...

编辑:如果您希望滚动条与列一起移动,那么您可以在 Change 事件中执行类似的操作(但如果将其添加到 Scroll 事件中,则会产生一些奇怪的结果:

Private Sub ScrollBar1_Change()
    Dim sc As Long
    sc = 4 + Me.ScrollBar1.Value
    ActiveWindow.ScrollColumn = sc
    Me.ScrollBar1.Left = Me.Cells(1, sc).Left
End Sub

但是 - 如果您随后手动移动工作表(通过箭头键等),那么滚动条将移出视野,并且没有 sheet_scroll 事件可用于重新定位滚动条。

【讨论】:

  • 这很好用,非常感谢!有什么办法可以让它浮动,以便当我左右滚动时它保持在同一个位置,尽管列滚动,即它浮动在列上但被锁定无法编辑。如果这有意义?
【解决方案2】:

请在工作表选择更改上输入以下代码

Me.ScrollBar1.Value = ActiveWindow.ScrollColumn - 4

请调整要滚动的列以适应活动窗口,然后调整滚动条1的最大滚动值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    相关资源
    最近更新 更多