簡體   English   中英

消息框彈出查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM