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 に答える