代码或工作簿中的某处存在错误或错误,但我似乎找不到或理解为什么会发生。
发生了什么事?有一个用户表单,其中包含一个按钮:
- 从sheet2中选择一个单元格
- 将选定的单元格值放在sheet1单元格B10中,这是一个下拉菜单
- 将表单返回的内容卸载到sheet1并选择一个单元格,该单元格在代码中现在描述为sheet1.B26。
现在,一旦表格消失了。如果我单击sheet1.B26选定的单元格并写东西,请按{TAB}
该单元格中的内容将转移到完全相同的单元格,但将自动在sheet2上,而sheet1.B26单元格为空。
如果我在表格消失后立即开始在所选单元格中书写,则只会发生一次。
工作表,工作簿或模块中没有任何代码/公式应描述此操作。
这困扰了我一周,但我找不到任何解决方案。
如果您想下载并尝试使用工作簿。
要重新创建它:
- 转到工作表1
- 使用Sheet1上第一个带有“ Klant zoek”文本的按钮启动表单。
- 按下表格上显示“选择器”的按钮。
- 不选择其他任何单元格通过宏在最后选择的单元格中输入内容,然后按Tab键。
PS-我没有在该工作簿中编写任何代码,只是分配了它来对其进行调试。
所描述的问题可以在Excel 2013中轻松重现,在早期版本中不会发生。我没有机会在2016年进行测试。类似的问题可以在这里和这里找到。
所有情况共有3个部分:
1)UserForm
是使用“表单按钮”或“形状单击”事件处理程序显示的
2)UserForm
是模态的(vbModal
是UserForm.Show
参数的默认值)
3)UserForm
代码更改活动表
结果,显示了由UserForm激活的工作表,但它实际上不是活动的。对它所做的任何编辑都会显示在先前(显示之前UserForm
)的活动工作表中。
这是Excel 2013中的错误,解决此错误最简单的方法是:
1)使用ActiveX按钮显示表单
2)显示无模形式: UserForm1.Show vbModeless
但是,如果我们不能使用ActiveX并需要模式形式怎么办?此答案建议隐藏并显示ActiveWindow
,但对我不起作用。
在没有ActiveX的情况下显示模式形式的唯一解决方法是:
要显示modal UserForm1
,请UserForm2
使用Activate
事件处理程序创建另一个空值:
Private Sub UserForm_Activate()
'hide form
Me.Left = -1000
'show target form
UserForm1.Show
Unload Me
End Sub
而不是:
UserForm1.Show
使用:
UserForm2.Show vbModeless
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句