2015-06-19 117 views
1

我有以下代碼:Excel的VBA Cell.Text vbNullString問題

If cell.Text <> vbNullString Then 
MsgBox "Hello" 
End If 

其中一些沒有文字,但確實包含公式的單元格,仍然會引發該消息框。沒有任何可見的單元格,當我做

MsgBox cell.Text 

消息框爲空。如果我刪除公式,消息框不會被觸發。唯一的區別是我發現有問題的單元格具有VarType 8,而其他單元格是VarType 5.沒有文本的VarType 5的單元格不會觸發MsgBox。公式格式在兩種單元格類型中都是相同的。

我應該怎麼做才能避免觸發這些單元格的消息框? (用於說明MSGBOX,它實際上執行其他代碼)

+1

試試'cell.Value'而不是 –

+0

這會導致類型不匹配錯誤 – whispersan

+0

Where?在MsgBox?然後執行此操作'MsgBox CStr(cell.Value)' –

回答

0

一個NULL在細胞中是不一樣的,爲完全空的細胞:

Sub dural() 
    With ActiveCell 
     If .Text = "" Then 
      If .HasFormula Then 
       MsgBox .Address & " has a formula returning a Null" 
      Else 
       MsgBox .Address & " is empty or contains a Null" 
      End If 
     End If 
    End With 
End Sub 

EDIT#1:

爲了區分之間:

  • 含有式返回一個空
  • 小區containi的小區NG含有什麼都沒有

使用空

  • C電量:

    Sub dural() 
        With ActiveCell 
         If .Text = "" Then 
          If .HasFormula Then 
           MsgBox .Address & " has a formula returning a Null" 
          Else 
           MsgBox .Address & " is empty or contains a Null" 
           If IsEmpty(ActiveCell) Then 
            MsgBox .Address & " is totally empty" 
           Else 
            MsgBox .Address & " contains a Null" 
           End If 
          End If 
         End If 
        End With 
    End Sub 
    
  • +0

    我試過如果Cell.Text <>「」而不是如果Cell.Text <> vbNullString並且它導致相同的錯誤 – whispersan

    +0

    @whispersan請參閱我的**編輯#1。** –

    +0

    您無法使用工作表單元格上的「IsEmpty」。 'IsEmpty'返回一個布爾值,表示一個變量是否被初始化,而不是一個單元是否爲空。 –

    0

    我不能在Excel中找到對象或屬性稱爲cell。所以cell.Text應該給你一個運行時錯誤。你應該使用類似ActieSheet.Cells(1,1).Value的東西。

    也就是說,要將單元格的內容與空字符串進行比較,可以使用""(空字符串)。您應該將其與Value屬性進行比較,而不是Text屬性,因爲後者是格式化版本。