Excel vba - Userform - 不更改输出 - 焦点工作表

时间:2017-12-19 22:54:49

标签: excel-vba vba excel

尝试使用excel vba userforms自动执行电子表格中的许多任务。 Sheet1上有一个Button1,它有两个命令。

sub Button1_click()
  sheet1.range("a3").select
  userform1.show
end sub

作为示例,我们要切换到一个数据输入工作表(sheet2)以将数据值输入到列表中。

为简化此示例并显示我的问题,userform有一个按钮

sub CommandButton1_click()
  userform1.hide ' hide the form
  sheet2.activate
  sheet2.range("b2").select
end sub

我希望能够做的是使用用户表单按钮切换到sheet2,选择b2,并能够立即从那里输入数据。

我得到的是sheet2.range(“b2”)上的选择框但是我从sheet1开始显示颜色!a3,然后是sheet1!b4,...我在sheet1上发生了输入!b2等

First of three

显示开始和条目

Second of three

来自sheet1的条目颜色显示在可见的sheet2上 - 数据未显示

Third of three

实际数据输入到sheet1而不是sheet2 -

1 个答案:

答案 0 :(得分:0)

问题似乎是(正如你在评论中提到的那样),在Button1_Click结束时,焦点会返回到包含按钮的工作表,即使ActiveSheet现在是另一张工作表

目前(直到有人提出更好的解决方案)“解决方法”是允许Button1_Click事件在显示表单之前完成运行。这可以通过将Button1_Click更改为类似:

来实现
Sub Button1_click()
  Sheet1.Range("a3").Select
  Application.OnTime Now(), "BypassBug"
End Sub

Sub BypassBug()
  UserForm1.Show
End Sub