2012-12-28 5 views
0

여기서는 텍스트로 저장된 문자열을 정수로 변환하는 중입니다. 불행히도 형식을 일반에서 숫자로 바꾸는 것은 그 속임수가 아니며, 나보다 먼저했던 것은 수동으로 각 개별 자릿수를 찾거나 바꾸는 것입니다 (즉, Excel에서 0, 1, 2, 3 등으로 바꾸기를 사용하십시오)VBA의 루프가 오작동하고 내가 원하는대로 실행되지 않습니다.

아래 코드로 인해 발생하는 문제는 일부 숫자 만 대체 할 수 있지만 전부는 아닙니다. 나는 그것을하는 정해진 패턴을 이해할조차 수 없다. 지금까지 내가 말할 수있는 진술은 각 "Digit"값을 0에서 9까지 오른쪽으로 실행해야합니다. 그렇다면 왜 모든 문자열을 대체하지 않습니까?

Dim Digit As Integer 
Dim ReplacementRange As Range 

Set ReplacementRange = Range("Table1[AR]")` 

Digit = 0 


For Digit = 0 To Digit = 9 

    ReplacementRange.Replace What:=Digit, Replacement:=Digit, LookAt:=xlPart, _ 
     SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
     ReplaceFormat:=False   
    Digit = Digit + 1 

Next 
+3

텍스트로 저장된 숫자를 숫자로 변환하고 있습니까? 그냥 'ReplacementRange.value = ReplacementRange.value'를 실행하지 않는 것이 좋습니다. –

+0

숫자 텍스트 문자열에 워크 시트 값 함수를 사용하고 값을 다시 셀에 복사하려고 시도 했습니까? – chuff

+0

나는 바보이기 때문에 ... 고마워. 나는 벽에 머리를 조금 넣어 주겠다. 당신은 방금 내 하루를 보냈습니다. 감사! – JakeMWP

답변

7

빨리, 당신은 단순히 같은 범위로 값을 배치 할 수 있습니다 숫자 값의 범위 내에서 텍스트로 저장된 번호를 변환하려면 :

ReplacementRange.value = ReplacementRange.value


편집 : 내가 가진 시간이 너무 짧아서 간단한 솔루션에 대한 복잡한 대안이 아니라 옆에있는 것에 무엇이 잘못되었는지 추가 할 수있을 것이라고 생각했습니다.

for the loo p가 잘못 구성되었습니다. 올바른 최소 구문은 [variable] = [startValue] to [endValue]이고, 예를 들어 For x = 0 to 1입니다.

For Digit = 0 To Digit = 9 이전에 0으로 자리를 설정하기 때문 오직 루프를 의미보다 합리적으로 처리됩니다 당신은 또한 루프 내 자리를 증가하고 있습니다. Digit = 0의 값에 대한 실행 (For Digit = 0 to 0에 해당하는 평가되고 끝 .. 단계를 증가이 경우, 당신은 당신이 값을 증가해서는 안 모든 자리를 공격 할

하는 루프를 해결하려면 다음을 수행해야합니다 :

For Digit = 0 To 9 
    ReplacementRange.Replace What:=Digit, Replacement:=Digit, LookAt:=xlPart, _ 
     SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
     ReplaceFormat:=False   
Next 

그러나이 .. . 여전히 텍스트로 저장된 숫자 문제는 해결되지 않습니다.

+0

훌륭하게 일하고, 나는 완전한 바보 같았다. 내가 왜 그런 짓을했는지 설명하기 위해, 나보다 먼저 생각한 사람 대신에 그 사람이했던 방식을 자동화하려고 노력했다. 많은 대니얼! – JakeMWP

+1

모를 경우 Daniel의 답변을 옆에있는 체크 표시를 클릭하여 쾌청 한 녹색 음영으로 바꾸십시오. –

+0

나는 그것을 알지 못했다. 나는 그것을 고쳤다. 덕 덕분에! – JakeMWP

관련 문제