想要使用旋转按钮(ActiveX控件)来显示上一张或下一张.单击该按钮时,事件成功触发并激活所需的工作表,但它包含原始工作表中的一些元素(命令,图形等),并将这些元素显示为附加图片.
向下按钮事件的示例代码:
Private Sub SpinButton_JumpToWeek_SpinDown()
Dim sh_num As String
Dim tmp_num As Integer
Application.ScreenUpdating = False
Application.EnableEvents = False
SpinButton_JumpToWeek.Value = Range("B27").Value - 1
tmp_num = SpinButton_JumpToWeek.Value
' Activate desired KTx sheet
sh_num = "KT" & tmp_num
Range("F27").Value = "" 'reset to blank
Sheets(sh_num).Activate
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Run Code Online (Sandbox Code Playgroud)
要覆盖此效果,我必须手动选择(激活)另一个工作表,然后再次选择所需的工作表.我还尝试使用宏自动化此变通方法,但不幸的是它不起作用.
有趣的是,如果我在调试模式下执行代码(使用断点和逐行步进),则不会发生此问题.
令人惊讶的是,如果我尝试通过将值(工作表名称索引)写入定义的单元格(即使用Worksheet_Change事件)来显示上一页/下一页,我就没有这样的问题.正确显示所需的页面.看照片.

此evententer图像描述的示例代码如下:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sh_num As String
Application.ScreenUpdating = False
Application.EnableEvents = False
If Range("F27").Value > 0 Then
' Activate desired KTx sheet
sh_num = "KT" & Range("F27").Value
Range("F27").Value = "" 'reset to blank
Sheets(sh_num).Activate
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Run Code Online (Sandbox Code Playgroud)
我需要使用Spin按钮,因为它更快,并允许我跳过一些工作表(例如,如果这些没有数据).32和64位Excel中都会出现此问题.
有人知道为什么会出现这个问题并找到解决方法吗?我是否必须在Excel中更改某些设置或系统属性?任何帮助将受到高度赞赏.
@mehow由于词汇量很大,我在这里附上了我的名字.
在我看来,可能有必要操纵某种系统属性(例如Application.ScreenUpdating技巧),但我没有足够的VBA知识来找到它.
顺便说一句,我也看不到这个论坛其他问题的图像..由于Web浏览器中缺少插件,是否会出现此问题?
小智 1
您可以使用一个简单的技巧...在“Application.screenupdating = true”之前您可以插入两行:
ActiveWindow.SmallScroll Down:=-100
ActiveWindow.SmallScroll Up:=100