Vba 转换为字符串将删除0';小数点后的数字

Vba 转换为字符串将删除0';小数点后的数字,vba,excel,excel-2013,Vba,Excel,Excel 2013,我正在使用下面的内爆()方法将数据从源工作簿复制到目标工作簿。我遇到的问题是,在源工作簿中,格式将是7.00,但在目标工作簿中,格式将是7,我相信这是由于CStr(MyR(1,I))即ConvertToString。如何更改此方法,以便在将列复制到目标工作簿后,如果列的格式为数值格式,那么它将再次为数值格式 Private Function Implode(ByVal R As Range, Optional ByVal D As String = strSeparator) As String

我正在使用下面的
内爆()
方法将数据从源工作簿复制到目标工作簿。我遇到的问题是,在源工作簿中,格式将是
7.00
,但在目标工作簿中,格式将是
7
,我相信这是由于
CStr(MyR(1,I))
即ConvertToString。如何更改此方法,以便在将列复制到目标工作簿后,如果列的格式为
数值
格式,那么它将再次为
数值
格式

Private Function Implode(ByVal R As Range, Optional ByVal D As String = strSeparator) As String
    Dim i As Long, ii As Long, str As String, MyR() As Variant
    MyR = R
    For i = 1 To R.Columns.Count
        isPercent = False
        If iPC > 0 And IsNumeric(MyR(1, i)) And MyR(1, i) <> "" Then
            For ii = 1 To iPC
                If i = PercCols(ii) Then
                    isPercent = True
                    Exit For
                End If
            Next ii
        End If
        str = CStr(MyR(1, i))
        If InStr(1, str, D) > 0 Then str = """" & str & """"
        If i = 1 Then
            Implode = str
        Else
            Implode = Implode & D & str
        End If
    Next i
End Function
Private函数内爆(ByVal R作为范围,可选ByVal D作为字符串=stresparator)作为字符串
Dim i为Long,ii为Long,str为String,MyR()为Variant
MyR=R
对于i=1到R.Columns.Count
isPercent=False
如果iPC>0且为数值型(MyR(1,i))且MyR(1,i)”,则
对于ii=1至iPC
如果i=PercCols(ii),则
isPercent=真
退出
如果结束
下一个ii
如果结束
str=CStr(MyR(1,i))
如果指令(1,str,D)>0,则str=“”&str&“
如果i=1,那么
内爆=str
其他的
内爆=内爆&D&str
如果结束
接下来我
端函数
可以试试

 If IsNumeric(MyR(1, i)) Then 'Check for numeric
      Round(CDec(MyR(1, i)),2)
 Else
      CStr(MyR(1, i))
 End If
CDec
允许不带小数的数字显示为整数


我考虑过这个问题,但我不希望每个列都是CDbl-我只希望它在源工作簿中有小数点时是CDbl。hi use CDec insteadCDec将在字符串值时保留字符串,在小数点值时保留小数点?非数字可能有用:Dyup,如果您的MyR(1,I)包含非数字,则可能需要先检查它是否为数字,然后相应地设置转换