Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String VBA字符串转换为不带舍入的整数_String_Vba_Integer_Decimal - Fatal编程技术网

String VBA字符串转换为不带舍入的整数

String VBA字符串转换为不带舍入的整数,string,vba,integer,decimal,String,Vba,Integer,Decimal,我想将字符串转换为整数,并保留小数点。 我尝试了多种方法,如Foramat和CInt,但所有这些方法最终都舍入了我的值 我的代码是: 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)

我想将
字符串
转换为
整数
,并保留小数点。
我尝试了多种方法,如
Foramat
CInt
,但所有这些方法最终都舍入了我的值

我的代码是:

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
e、 g.数组
tlmold()
中的
strestz
的第一个值为0.085,第二个值为0.097
我想比较一下


提前感谢

整数是一个整数变量。改用double。

整数是一个整数变量。改为使用double。

“我想将字符串转换为整数并保留小数点。”-不可能,整数是“Ganz Zahl”

然而,我认为这不是你的问题。我注意到您来自德国,因此您显然遇到了逗号分隔符的问题,这在德国是一个逗号。在美国和VBEditor中,它是一个点。因此,您必须将您的输入转换为预期的内容<代码>替换()就是这样做的

你自己看看:

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
,第二次打印时,您将获得
0085
,正如预期的那样。

“我想将字符串转换为整数并保留小数点。”-不可能,整数是“Ganz Zahl”

然而,我认为这不是你的问题。我注意到您来自德国,因此您显然遇到了逗号分隔符的问题,这在德国是一个逗号。在美国和VBEditor中,它是一个点。因此,您必须将您的输入转换为预期的内容<代码>替换()就是这样做的

你自己看看:

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
,第二次打印时,您将获得
0085
,正如预期的那样。

输入带有“点”。系统是建立在英语,但感谢的想法!我得到“0.085”和“85”@rosi97-如果你问一个美国人你认为他/她会得到什么?@rosi97-如果你从代码中得到两个不同的值,你的系统不在英语设置中。VBEditor采用英语设置,但Windows使用逗号和小数分隔符。这可能是一个问题,如果您是从外部文件读取,或者如果您是在Excel中编写VBA公式。好的,那么我不知道这是从哪里来的。键盘输入语言为“英语(美国)”。不管怎样,代码现在对我来说很好。谢谢你的信息。输入带有“点”。系统是建立在英语,但感谢的想法!我得到“0.085”和“85”@rosi97-如果你问一个美国人你认为他/她会得到什么?@rosi97-如果你从代码中得到两个不同的值,你的系统不在英语设置中。VBEditor采用英语设置,但Windows使用逗号和小数分隔符。这可能是一个问题,如果您是从外部文件读取,或者如果您是在Excel中编写VBA公式。好的,那么我不知道这是从哪里来的。键盘输入语言为“英语(美国)”。不管怎样,代码现在对我来说很好。谢谢你的信息。