2017-07-08 73 views

回答

1

或者乾脆這...

If Application.CountIf(Range("H:H"), MoneyTextBox.Value) > 0 Then 
    MsgBox "Duplicate number" 
End If 
2

用這個代替未發現:

If Not IsError(Application.Match(CLng(MoneyTextBox.Value), Range("H:H"), 0)) Then 
    MsgBox "Duplicate number" 
EndIf 
+0

爲什麼'不是IsError'而不是直接'IsNumeric'? –

+0

@DirkReichel我在Excel公式中使用了緊湊形式'ISNUMBER',但是在VBA中尤其如此,我更喜歡更明確的形式。但兩者都很好。 –

+0

但輸出只能是數字或錯誤。這樣'IsNumeric'並不比'Not IsError'更不明確:P –

2

Find method不返回找到的文本,但第一個小區的情況下的文字被發現,並且當它沒有被發現時,它返回Nothing。此外,你的範圍有數字(通過你的問題的標題),而你的表單可能有一個文本輸入框(問題不明確)。由於這個原因,你的情況每次都是錯誤的。

相反,文本輸入轉換爲數字,並用事實Find方法返回Nothing文本時未找到:

更改此:

If MoneyTextBox.Value = range("H:H").Find(MoneyTextBox.Value) Then 

到:

If Not Range("H:H").Find(CLng(MoneyTextBox.Value)) Is Nothing Then