[英]Message box popup query
我在excel电子表格中有以下代码,但是如果范围内的查找值为空白单元格,是否有一种方法可以防止消息框弹出? 另外,有没有一种方法可以使消息框在工作表上的缩窄区域中弹出。 在此先感谢您的帮助!
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("facops")) Is Nothing Then
On Error Resume Next
MsgBox WorksheetFunction.VLookup(Target.Offset(0, 0), Worksheets("Options").Range("Options"), 3), vbOKOnly, "Option Information"
On Error GoTo 0
End If
End Sub
为了防止弹出空白单元格,您可以先检查VLookup的结果,然后再将其显示在消息框中:
If Not IsEmpty(WorksheetFunction.VLookup(.......)) Then
MsgBox ...
End If
消息框无法显示在屏幕的特定区域。 但是,您可以创建一个表单,显示带有错误消息的表单,然后在屏幕上的任何位置显示此表单。 以下代码示例将在Excel的中心显示表单:
frmMessageBox.StartUpPosition = 0
frmMessageBox.Left = Application.Left + Application.Width / 2 - frmMessageBox.Width / 2
frmMessageBox.Top = Application.Top + Application.Height / 2 - frmMessageBox.Height / 2
Load frmMessageBox
frmMessageBox.Show
此示例将在Excel的右下角显示该表单:
frmMessageBox.Left = Application.Left + Application.Width - frmMessageBox.Width
frmMessageBox.Top = Application.Top + Application.Height - frmMessageBox.Height
我会将查找结果存储在字符串中,并且仅在结果为非空时才显示消息框。 您可能想检查vlookup是否也成功地找到了一个结果,但是方法大体相同:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim s As String
If Not Intersect(Target, Range("facops")) Is Nothing Then
On Error Resume Next
s = WorksheetFunction.VLookup(Target.Offset(0, 0), Worksheets("Options").Range("Options"), 3)
If s <> "" Then
MsgBox s, vbOKOnly, "Option Information"
End If
On Error GoTo 0
End If
End Sub
放置消息框更加棘手,例如,快速的Google会在Excel先生论坛上显示该线程 , 该线程提供了一些代码来满足您的要求。 我还没有亲自尝试过,因此无法保证它会正常工作,但是除非您要创建自定义表单或使用输入框(都可以放置两者),否则这是我最好的建议。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.