반응형
보통 아래의 화면처럼 숫자인데 초록색 삼각형 경고창이 뜨는 경우 VBA에서 값을 계산할 때 인식하지 못 하는 경우가 생긴다.
그럴 경우 초록색 삼각형을 풀어주고 싶을 때 vba 서식을 NumberformatLocal 함수를 써서 서식을 바꾸지만 해당 경우같은 경우는 서식은 바뀌지만 경고창은 풀리지 않는다.
그럴경우 vba를 사용하지 않는다면 셀을 더블클릭하거나 해야 하는데 vba에서는 어떻게 하는지 알아보자.
Sub 형식변환()
Range("b2") = Val(Range("b2"))
End Sub
위는 변환을 하는 코드이다.
결과를 보면 해당셀의 경고창이 사라졌다.
이렇게 해서 전체를 풀고싶으면 전체를 range변수로 잡아서 풀어줘야 겠다...생각하고 코드를 짠다면 아래와 같을것이다.
Sub 형식변환()
Dim rng풀려라 As Range, rngC As Range
Dim int마지막행 As Long
int마지막행 = Range("a1").CurrentRegion.Rows.Count
Set rng풀려라 = Range("b2", "b" & int마지막행)
For Each rngC In rng풀려라
rngC = Val(rngC)
Next
End Sub
이렇게 실행한 아래처럼 잘 풀리는 경우가 있다. 하지만 이렇게 range변수를 써서 for문을 돌렸을때에도 초록색 삼각형이 풀리지 않을 경우도 있다. xls 파일 등이 가끔 그렇다.
그럴 경우에는 아래처럼 실행하면 된다.
Sub 형식변환()
Dim rng풀려라 As Range, rngC As Range
Dim int마지막행 As Long
int마지막행 = Range("a1").CurrentRegion.Rows.Count
For i = 2 To int마지막행
Range("b" & i) = Val(Range("b" & i))
Next
End Sub
얼핏 보면 위의 코드와 똑같은데 방금 같은 방법으로 실행해서 해결되는 경우가 있다.
반응형
'[VBA]' 카테고리의 다른 글
[VBA] 엑셀 기본 저장 format 설정 (0) | 2021.08.09 |
---|---|
[VBA] 다른 엑셀파일 내용 가져오기 (프론트, 백) (14) | 2021.08.09 |
[VBA] 숨겨진 워크시트 모두 보이기 (0) | 2021.07.01 |
[VBA] 범위 합계 구하기 (0) | 2021.04.16 |
[VBA] 중복 제거 (0) | 2021.04.16 |