2014-01-21 59 views
2

我想驗證單元格在我的Sub中的單元格,它將檢查以確保它是一個數字並且不再長於所需的文本長度,但這種情況有所不同,但我發現使用功能。Excel VBA-驗證是數字和文本長度

我可以驗證文本長度,但顯然這將仍然允許文本:

With Selection.Validation 
    .Delete 
    .Add Type:=xlValidateTextLength, AlertStyle:=xlValidAlertStop, _ 
    Operator:=xlBetween, Formula1:="0", Formula2:=ValidMaxLength 

任何幫助非常讚賞。

+1

您是否嘗試過類似於「= AND(LEN(A1)<4,ISNUMBER(A1))」的公式2:=? – pnuts

回答

0

考慮到我們要計算圓的位數(不包括十進制數字,減號或小數點):

With Selection.Validation 
    .Delete 
    .Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, _ 
      Operator:=xlBetween, Formula1:="=IF(" & Selection.Address & _ 
      "=0, TRUE, AND(ISNUMBER(" & Selection.Address & _ 
      "), ROUNDDOWN(LOG10(ABS(" _ 
      & Selection.Address & ")),0)<" & ValidMaxLength - 1 & "))" 
End With 

這應該做的考慮1EN有N + 1個數字的工作。

+0

這是行不通的,我可以添加一個龐大的數字,它只是計算字段中的字符數,而不是數字的長度 – user3219693

+0

應該添加這是一個問題,當Excel將大數目更改爲1E + nnn – user3219693

+0

我改變了方法來計算位數,即使它是科學的格式。我忽略了小數位和減號。 – hstay