5 자리의 경우 일부 문자열 = 'XXXXX'모든 X가 나는 다스가 있어야합니다 알고 9문자열이 정확하게되어 있는지 확인 내가 true를 반환 할 수
을 통해 숫자 0
이것을하는 방법 그러나 나는 제일 방법을 알고 싶으면.
5 자리의 경우 일부 문자열 = 'XXXXX'모든 X가 나는 다스가 있어야합니다 알고 9문자열이 정확하게되어 있는지 확인 내가 true를 반환 할 수
을 통해 숫자 0
이것을하는 방법 그러나 나는 제일 방법을 알고 싶으면.
을 확인하려면 보다 효율적인 방법을 원한다면, 다른 메소드에 대한 몇 가지 테스트를 실행해야 할 것이다. 사람들이 제안했다.
편집 : 이전 솔루션은 제대로 작동하지 않지만 (처음 2 가지 설명을 참조하십시오.) 받아 들여진 이후로 알려 드리겠습니다. 여기에 내가 무엇을 할 것이라고입니다 :
Function MyFunction(myString As String) As Boolean
Dim myDouble As Double
Dim myLong As Long
myDouble = Val(myString)
myLong = Int(myDouble/10000)
MyFunction = ((Len(myString) = 5) And (myLong > 0) And (myLong < 10))
End Function
은 그 기능에 오류 "보호"가 없다, 그래서 당신은 22222222222222 같은 너무 큰 번호를 확인하려고하면, 그것은 작동하지 않습니다.
yourString Like "#####"
비슷한 질문은 이전 질문 :
Function MyFunction(myString As String) As Boolean
MyFunction = ((Len(myString) = 5) And (IsNumeric(myString)))
End Function
당신 경우 : link text
은 기본적으로 당신이 간단한 방법을 원한다면, 당신이 함께 갈 수
(Len(s) = 5) And IsNumeric(s)
정규식을 사용하여이 문제를 해결할 수도 있습니다. Microsoft VBScript Regular Expressions 5.5를 VBA 프로젝트에 포함 시키면 아래 함수와 같이 RegExp
및 MatchCollection
변수를 사용할 수 있습니다. (이것은 ozgrid.com this post에 대한 응답의 변형이다.) 네 자리 음수 이러한 테스트 모두를 통과 할
Public Function FiveDigitString(strData As String) As Boolean
On Error GoTo HandleError
Dim RE As New RegExp
Dim REMatches As MatchCollection
With RE
.MultiLine = False
.Global = False
.IgnoreCase = True
.Pattern = "^[0-9][0-9][0-9][0-9][0-9]$"
End With
Set REMatches = RE.Execute(strData)
If REMatches.Count = 1 Then
FiveDigitString = True
Else
FiveDigitString = False
End If
Exit Function
HandleError:
Debug.Print "Error in FiveDigitString: " & Err.Description
FiveDigitString = False
End Function
- 예컨대 -3621은 5 자이며 숫자입니다. 소수점 (36.21) 또는 천 단위 구분 기호 (3,621)도 문제가됩니다. – barrowc
True이면 충분합니다! 또한 문자열이 "00005"이면 필자가 생각하는 유효성 검사를 통과합니다. – Tipx