如何“捕捉”到RefEdit选择的顶部
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何“捕捉”到RefEdit选择的顶部相关的知识,希望对你有一定的参考价值。
我正在使用VBA在Excel 2016中开发用户窗体。
我在userform上有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(RefEditi)规范相关联的工作表属性?如果是这样,那么捕获与RefEdit选择相关联的活动工作表的好方法是什么?
===============================================
我尝试使用此代码捕获活动的工作簿/表,但它使userform消失:
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
用户形式的问题是否与背景活动允许问题相关?
答案
资格的例子,包括用户形式的无模式调用:
public ws as worksheet
sub launch_userform()
set ws = activesheet
userform1.show vbmodeless
end sub
重要的是要注意这是在userform之前调用的,因为当useform是焦点时没有“活动”表。
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
以上是关于如何“捕捉”到RefEdit选择的顶部的主要内容,如果未能解决你的问题,请参考以下文章