0

有一个小问题,但我无法解决。也许有人可以帮助我。很受好评。
我的小数分隔符的区域设置是“。” (点)。
我有一个 excel 文件,其中包含一些列中的小数位。在更新 excel 模板中的数据时,我关闭了用户系统设置,然后应用 DOT 作为分隔符。在将其转换为文本文件时,它显示逗号“,”作为小数分隔符。我正在使用以下代码关闭用户设置

使用应用程序
StrDecimal = .DecimalSeparator
StrThousand = .ThousandsSeparator

.DecimalSeparator = "."  
.ThousandsSeparator = "'" 
.UseSystemSeparators = False  
End With  

需要检查小数分隔符是否不等于“。” 那么我们需要强制使用“。” aS 小数分隔符。

请帮助如何通过使用 VBA 或使用 Datavalidation 来实现这一点
非常感谢您提前!

4

1 回答 1

1

因此,您已经获得了数据并将其写入文本文件。假设您的数据在一个数组中,我将遍历数组并在将数据转换为字符串后转换数据,就像这样。

Sub ChangeDecimalSeperator()
    Dim vData As Variant, ii As Integer, jj As Integer

    vData = ActiveSheet.Range("A1:B2")
    For ii = LBound(vData, 1) To UBound(vData, 1)
        For jj = LBound(vData) To UBound(vData, 2)
            'Only convert if it's a number
            If VBA.IsNumeric(vData(ii, jj)) Then
                'You can also specify the format using VBA.Format$() here, ie force the decimal places
                vData(ii, jj) = ReplaceCharacter(VBA.CStr(vData(ii, jj)), ".", ",")
            End If
        Next jj
    Next ii

    'Now output vData to your textfile

End Sub


Function ReplaceCharacter(sForString As String, sReplacingCharacter As String, sWithCharacter As String) As String
    Dim sStringPrevious As String

    'While there is a character that we still need replacing left, keep going. If we can't find one, we're done
    Do
        sStringPrevious = sForString
        sForString = VBA.Replace(sForString, sReplacingCharacter, sWithCharacter)
    Loop Until sStringPrevious = sForString

    ReplaceCharacter = sForString
End Function
于 2012-12-05T07:53:33.673 回答