从“用户形式”按钮中选择工作表会导致输入的数据在前一个工作表上

时间:2015-02-28 10:24:18

标签: excel vba

我从用户窗体上的按钮调用一个名为SelectSheet1的宏来选择Sheet1。

之后输入数据时,会将其放在上一张纸上。

这在Excel 2013上发生。我确认它在Excel 2007中不是问题。

如果直接从开发人员选项卡,键盘快捷键,快速访问工具栏或功能区自定义运行宏,也不会出现问题。

userform命令按钮代码:

Private Sub CommandButton1_Click()
    Call SelectSheet1
    Unload UserForm1
End Sub

SelectSheet1宏选择工作表:

Sub SelectSheet1()
    Sheets("Sheet1").Activate
End Sub

Link to xlsm file in dropbox

Link to youtube video if you want to see with your own eyes

这是一个奇怪的错误,想知道Excel 2013是否存在问题,他们做事情的方式发生了变化,可能还有解决方法。

2 个答案:

答案 0 :(得分:0)

激活表单之前,请确保只有一页选择

Sub SelectSheet1()
   Sheets("Sheet1").Select
   Sheets("Sheet1").Activate
End Sub

请记住:"虽然只有一张工作表可能处于活动状态,但可能会选择多个工作表。"

答案 1 :(得分:0)

我能够弄清楚如何让它发挥作用,但不确定为什么这会解决问题。

我在调用宏之前卸载了Userform,我尝试使用select而不是Activate,这些没有帮助。但在我切换以便UserForm加载vbModeless之后我的问题就消失了,不知道为什么会修复它。

对我来说,解决这个问题的关键是vbModeless,但是如果有更多了解的人可以解释原因,那就更愿意了。

Private Sub CommandButton1_Click()
  Unload UserForm1
  Call SelectSheet1
End Sub

Sub ShowMainMenu()
  UserForm1.Show vbModeless
End Sub

Sub SelectSheet1()
  Sheets("Sheet1").Select
End Sub