2017-11-15 3 views
0

StringInteger으로 변환하고 소수 자릿수를 유지하려고합니다.
ForamatCInt과 같이 여러 가지를 시도했지만 모두 내 가치를 반올림합니다.VBA 반올림하지 않고 정수로 문자열

내 코드는 다음과 같습니다

Dim posZ As Integer 
Dim TestZ As Integer 
Dim strTestZ As String 
Dim TestZold As Integer 

For i = 1 To tllength 
    posZ = InStr(tlmold(i), "Z=") 
    strTestZ = Mid(tlmold(i), posZ + 2, 5) 

    TestZ = Format(strTestZ, "0.0000") 

    If TestZold = TestZ Or (TestZold - TestZ) > 0.02 Or (TestZ - TestZold) > 0.02 Then 
    countLip = countLip + 1 
    End If 
TestZold = TestZ 
Next I 

예를 배열 tlmold()에있는 strTestZ의 첫 번째 값은 0.085이고, 두 번째 값은 0.097입니다.
그리고 내가 그들을 비교할 .. 사전

답변

2

정수의

덕분에 정수 변수입니다. 대신에 double을 사용하십시오.

+0

아주 간단합니다 ...하지만 고마워요! – rosi97

1

"문자열을 정수로 변환하고 소수 자릿수를 유지하려고합니다."- 불가능합니다. 정수는 "Ganz Zahl"입니다.

그러나 이것은 사용자 문제가 아니라고 생각합니다. 나는 당신이 독일 출신이기 때문에 독일에서 쉼표로 구분되는 쉼표 구분 기호에 문제가 있음을 분명히 알 수 있습니다. 미국과 VBEditor에서는 점입니다. 따라서 약간의 입력을 예상 한 것으로 변환해야합니다. Replace()이 그것을 수행하는 방법입니다.

는 자신에 대한 참조 : 예상대로

Public Sub TestMe() 

    Dim inputA   As String 
    Dim convertedNumber As Double 

    inputA = "0.085" 
    convertedNumber = CDbl(inputA) 
    Debug.Print convertedNumber 

    inputA = Replace(inputA, ".", ",") 
    convertedNumber = CDbl(inputA) 
    Debug.Print convertedNumber 

End Sub 

당신이 85을 얻을 것 인쇄 처음과 두 번째, 당신은, 0,085을 얻을 것입니다.

+0

입력은 "점"으로 표시됩니다. 체계는 영어에 설치되고 그러나 아이디어를위한 감사합니다! – rosi97

+0

@ rosi97 - 내 코드를 실행하십시오. 너는 무엇을 얻 느냐? – Vityata

+0

나는 "0.085"와 "85" – rosi97