2015-01-28 1 views
1

이것은 내 코드 조각입니다."1.591E + 17"값으로 변환하지 않고 Excel 셀에서 "루프"를 사용하여 19 자리 숫자를 입력하는 VBA 코드?

For i = 0 To Val(TextBox2.Value)  
var1 = TextBox1.Value + i 
ActiveCell.NumberFormat = "@" 
ActiveCell.Value2 = var1 
ActiveCell.Offset(1, 0).Activate 
Next i 

입력 내용이 "159100000000000000"이고 예상 한 내용은 "X"숫자입니다. 나는 심지어 내가 런타임에서 "텍스트"내 세포의 숫자 서식을 변경하려고

159100000000000000 
159100000000000001 
159100000000000002 
159100000000000003 
. 
. 
. 

같은 셀의 값을 얻어야한다. 아직

'1.591E + 17'처럼 1.591E + 17의 값을 얻고 '을 1.591E + 17'1.591E + 17

사람이 나를 도와 드릴까요?

답변

1

이 숫자는 정수로는 너무 길고 Double에는 너무 정확한 숫자이므로 숫자를 저장할 수 없습니다. 이를 수행하는 유일한 방법은 마지막 몇 자리 숫자를 증가시키고 접두어를 문자열로 유지하는 것입니다. (테스트되지 않은) 같은

뭔가 : 텍스트가 항상 그렇지 않으면 19 자리의 prefix, startValueendValue 변수 인 경우

Dim prefix As String 
Dim startValue As Long 
Dim endValue As Long 

prefix = Left(TextBox1.Value, 12) 
startValue = Val(Right(TextBox1.Value, 7)) 
endValue = startValue + Val(TextBox2.Value) 

For i = startValue To endValue 
    ActiveCell.Value2 = prefix & Format(i, "0000000") 
    ActiveCell.Offset(1, 0).Activate 
Next 

이 만 작동은 적절하게 조정해야합니다.

+0

문제가되지로 값을 받고으로, 숫자로 값이 들어있는 셀입니다 것 같다 세포. 귀하의 솔루션이 궁극적으로 연결로 인해 문자열을 출력하는 것처럼 보이지만 이것을 달성하는 데는 복잡합니다. –

+0

@ n8 숫자가 너무 커서 조작 할 수 없습니다. Excel은 임의로 큰 정수를 처리하지 않습니다. 15 자리의 정밀도 만 얻을 수 있습니다. – Phylogenesis

+0

그래도 텍스트 상자 값이 문자열이고 셀이 텍스트로 서식이 지정되어 있으면 숫자로 지정할 이유가 없습니다. 유일한 과제는 Excel이 도움이되지 않으며 번호로 변환하지 못하도록 보장하는 것입니다. –

0

당신은의 NumberFormat를 포맷하고 특히 당신이 밖으로 포맷하는 방법을 많은 장소 정의 할 수 있습니다 :

For i = 0 To Val(TextBox2.Value)  
var1 = TextBox1.Value + i 
ActiveCell.NumberFormat = "00000000000000000.0" 
ActiveCell.Value2 = var1 
ActiveCell.Offset(1, 0).Activate 
Next i 
+0

@ Phylogenesis 그것은 당신의 제안과 함께 작동합니다. 조언 해 주셔서 감사합니다. –

관련 문제