VBA Function

IsNumeric 함수

노만e 2025. 3. 16. 17:37

엑셀 VBA에서 IsNumeric 함수는 주어진 값이 숫자인지 확인하는 데 사용됩니다.

즉, 변수나 셀 값이 숫자인지 판별할 때 유용합니다.


1. 기본 문법

IsNumeric(값)
  • 반환값
  • True → 값이 숫자인 경우
  • False → 값이 숫자가 아닌 경우 (문자, 빈 값, 특수문자 등)

2. 기본 사용 예제

Sub 숫자인지_확인()
Dim 값 As Variant
값 = 123
If IsNumeric(값) Then
MsgBox "숫자입니다."
Else
MsgBox "숫자가 아닙니다."
End If
End Sub

📌 값 = 123은 숫자이므로 "숫자입니다." 출력


3. 숫자가 아닌 경우

Sub 숫자가_아닌경우()
Dim 값 As Variant
값 = "Hello"
If IsNumeric(값) Then
MsgBox "숫자입니다."
Else
MsgBox "숫자가 아닙니다."
End If
End Sub

📌 "Hello"는 숫자가 아니므로 "숫자가 아닙니다." 출력


4. 셀 값이 숫자인지 확인

Sub 셀_숫자확인()
Dim 셀값 As Variant
셀값 = Range("A1").Value
If IsNumeric(셀값) Then
MsgBox "A1 셀은 숫자입니다."
Else
MsgBox "A1 셀은 숫자가 아닙니다."
End If
End Sub

📌 A1 셀 값이 숫자면 "A1 셀은 숫자입니다." 출력

📌 문자면 "A1 셀은 숫자가 아닙니다." 출력


5. 여러 셀에서 숫자인 경우 색 변경

Sub 숫자인_셀_색칠()
Dim rng As Range, cell As Range
Set rng = Range("A1:A10") ' 확인할 범위
For Each cell In rng
If IsNumeric(cell.Value) Then
cell.Interior.Color = RGB(144, 238, 144) ' 연한 녹색
Else
cell.Interior.Color = RGB(255, 99, 71) ' 빨간색
End If
Next cell
End Sub

📌 A1:A10 범위에서 숫자가 있는 셀은 녹색, 숫자가 아닌 셀은 빨간색으로 변경


6. 사용자 입력값이 숫자인지 확인

Sub 사용자_입력_숫자확인()
Dim 입력값 As Variant
입력값 = InputBox("숫자를 입력하세요.")
If IsNumeric(입력값) Then
MsgBox "입력한 값은 숫자입니다: " & 입력값
Else
MsgBox "숫자만 입력 가능합니다!", vbExclamation
End If
End Sub

📌 사용자가 입력한 값이 숫자가 아니면 "숫자만 입력 가능합니다!" 출력


7. 숫자 변환 후 사용 (Val 함수 활용)

Sub 숫자로_변환()
Dim 입력값 As Variant
입력값 = InputBox("숫자를 입력하세요.")
If IsNumeric(입력값) Then
MsgBox "입력한 숫자 + 10 = " & Val(입력값) + 10
Else
MsgBox "숫자만 입력 가능합니다!", vbExclamation
End If
End Sub

📌 사용자가 "50"을 입력하면 50 + 10 = 60 출력


8. 숫자가 아닌 데이터 삭제

Sub 숫자가_아닌값_삭제()
Dim rng As Range, cell As Range
Set rng = Range("A1:A10")
For Each cell In rng
If Not IsNumeric(cell.Value) Then
cell.ClearContents ' 숫자가 아닌 값 삭제
End If
Next cell
End Sub

📌 A1:A10 범위에서 숫자가 아닌 값만 삭제 (숫자는 유지)


9. 숫자가 아닌 데이터 개수 세기

Sub 숫자가_아닌값_개수()
Dim rng As Range, cell As Range
Dim 개수 As Integer
Set rng = Range("A1:A10")
개수 = 0
For Each cell In rng
If Not IsNumeric(cell.Value) Then
개수 = 개수 + 1
End If
Next cell
MsgBox "숫자가 아닌 셀 개수: " & 개수
End Sub

📌 A1:A10 범위에서 숫자가 아닌 셀 개수를 계산하여 메시지 출력


10. 숫자가 아닌 값을 "오류"로 변경

Sub 숫자가_아닌값_오류표시()
Dim rng As Range, cell As Range
Set rng = Range("A1:A10")
For Each cell In rng
If Not IsNumeric(cell.Value) Then
cell.Value = "오류"
End If
Next cell
End Sub

📌 A1:A10 범위에서 숫자가 아닌 값을 "오류"로 변경


📝 정리

기능
VBA 코드
변수가 숫자인지 확인
If IsNumeric(x) Then
셀 값이 숫자인지 확인
If IsNumeric(Range("A1").Value) Then
숫자인 경우 색 변경
If IsNumeric(cell.Value) Then cell.Interior.Color = RGB(144, 238, 144)
사용자 입력값이 숫자인지 확인
If IsNumeric(입력값) Then
숫자로 변환 (Val 활용)
Val(입력값) + 10
숫자가 아닌 값 삭제
If Not IsNumeric(cell.Value) Then cell.ClearContents
숫자가 아닌 데이터 개수 세기
If Not IsNumeric(cell.Value) Then 개수 = 개수 + 1
숫자가 아닌 값을 "오류"로 변경
If Not IsNumeric(cell.Value) Then cell.Value = "오류"

🔥 VBA의 IsNumeric을 활용하면 숫자 여부를 판별하여 다양한 작업을 자동화할 수 있습니다! 🚀