我正在使用VBA在Excel 2016中开发用户表单。
我在用户窗体上有2个RefEdit控件。一旦用户在其中一个RefEdit控件中进行选择,然后输入另一个RefEdit控件以进行下一个选择,我希望电子表格“捕捉”到另一个RefEdit中指定的选择的顶部(这将使选择多时,可用性上会有很大的差异。
注意:当切换到顶部时,我不希望不更改工作表中的活动单元格。
下面是使用我尝试过的一些方法的操作代码(除了一个已注释掉)。 Application.Goto方法似乎确实正是我在寻找的东西,但是,目前无法正常工作。
Private Sub RefEdit1_Enter()
If Len(Trim(RefEdit1.value)) = 0 And Len(Trim(RefEdit2.value)) > 0 Then
Application.Goto Reference:=Range(RefEdit2).Offset(0, 1), Scroll:=True
'Range(RefEdit2).Offset(0, 1).Select
'Range(RefEdit2).Cells(1, 1).Select
'SendKeys "{ESC}"
'Application.CutCopyMode = False
End If
End Sub
Private Sub RefEdit2_Enter()
If Len(Trim(RefEdit2.value)) = 0 And Len(Trim(RefEdit1.value)) > 0 Then
Application.Goto Reference:=Range(RefEdit1).Offset(0, 1), Scroll:=True
'Range(RefEdit1).Offset(0, 1).Select
'Range(RefEdit1).Cells(1, 1).Select
'SendKeys "{ESC}"
'Application.CutCopyMode = False
End If
End Sub
此代码不会创建任何错误消息,只是无法按预期执行。可能是因为没有与Range(RefEdit i )规范关联的工作表属性?如果是这样,捕获与RefEdit选择关联的活动工作表的一种好方法是什么?
我确实尝试使用此代码捕获活动的工作簿/工作表,但它使用户窗体消失了:
Private Sub RefEdit1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Set WBData = Application.ActiveWorkbook
Set WSData = Application.ActiveWorksheet
End Sub
Private Sub RefEdit2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Set WBData = Application.ActiveWorkbook
Set WSData = Application.ActiveWorksheet
End Sub
与后台活动许可相关联的用户表单消失的问题吗?
答案 0 :(得分:0)
资格示例,包括对用户表单的无模式调用:
public ws as worksheet
sub launch_userform()
set ws = activesheet
userform1.show vbmodeless
end sub
请注意,这是在用户表单之前调用的,因为当用户表单成为焦点时,没有“活动”表。
edit1 :将给出一个更强的示例...
在名为“ moo”的模块中:
Option Explicit
Public ws As Worksheet
Sub fdsa()
Set ws = ActiveSheet
Application.Run ("cat.mouse")
End Sub
在模块“ cat”中:
Option Explicit
Private Sub mouse()
ws.Cells(1, 1).Value = 2
End Sub