1

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

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

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

我的培训师技能矩阵的屏幕截图

4

2 回答 2

0

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

Me.ScrollBar1.Value = ActiveWindow.ScrollColumn - 4

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

于 2012-12-26T18:17:49.953 回答
0

对于 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 事件可用于重新定位滚动条。

于 2012-10-17T20:01:52.027 回答