转换为字符串删除十进制后的 0
Converting To String Removes 0's after Decimal
我正在使用下面的 Implode()
方法将数据从源工作簿复制到目标工作簿。我遇到的问题是,在源工作簿中,格式将为 7.00
,但在目标工作簿中,格式将为 7
,我相信这是由于 CStr(MyR(1, i))
,即 ConvertToString。我如何更改此方法,以便如果该列采用 numeric
格式,一旦将其复制到目标工作簿,它就会再次采用 numeric
格式?
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
可以试试
If IsNumeric(MyR(1, i)) Then 'Check for numeric
Round(CDec(MyR(1, i)),2)
Else
CStr(MyR(1, i))
End If
CDec
允许没有小数点的显示为整数
我正在使用下面的 Implode()
方法将数据从源工作簿复制到目标工作簿。我遇到的问题是,在源工作簿中,格式将为 7.00
,但在目标工作簿中,格式将为 7
,我相信这是由于 CStr(MyR(1, i))
,即 ConvertToString。我如何更改此方法,以便如果该列采用 numeric
格式,一旦将其复制到目标工作簿,它就会再次采用 numeric
格式?
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
可以试试
If IsNumeric(MyR(1, i)) Then 'Check for numeric
Round(CDec(MyR(1, i)),2)
Else
CStr(MyR(1, i))
End If
CDec
允许没有小数点的显示为整数