想要使用“旋转”按钮(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
要覆盖此效果,我必须手动选择(激活)另一张纸,然后再次选择所需的纸张。我还尝试使用宏自动化此变通方法,但不幸的是它不起作用。
有趣的是,如果我在调试模式下执行代码(使用断点和逐行步进),则不会出现此问题。
令人惊讶的是,如果我尝试通过将值(工作表名称索引)写入定义的单元格(即使用Worksheet_Change事件)来显示上一页/下一页,我没有这样的问题。正确显示所需的页面。见照片。
此偶数图像描述的示例代码:
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
我需要使用Spin按钮,因为它更快,并允许我跳过一些工作表(例如,如果这些没有数据)。 在32位和64位Excel中都会出现此问题。
有人知道为什么会出现这个问题并找到解决方法吗?我是否必须在Excel中更改某些设置或系统属性?任何帮助都将受到高度赞赏。
@mehow 由于词汇很多,我在这里追加我的恭喜。
在我看来,可能需要操纵某种系统属性(例如Application.ScreenUpdating技巧),但我没有足够的VBA知识来查找它。
答案 0 :(得分:1)
你可以使用一个简单的技巧......在“Application.screenupdating = true”之前你可以插入两行:
ActiveWindow.SmallScroll Down:=-100
ActiveWindow.SmallScroll Up:=100