【问题标题】:Excel Delimiter changes to System default when creating a string based on multiple range values基于多个范围值创建字符串时,Excel 分隔符更改为系统默认值
【发布时间】:2025-12-11 07:20:07
【问题描述】:

只是一个简单的用例,但它一直困扰着我!

A1: 2046.40
B1: 504.30

当我使用从表中追加多个值时 Worksheet(sheetname).Range("C1") = Worksheet(sheetname).Range("A1") & "," & Worksheet(sheetname).Range("B1")

我根据系统设置得到结果分隔符=“。” 结果:2046.40,504.30(字符串)

当使用不同语言的用户打开它并运行此函数时,concat_value (C1) 中的分隔符会发生变化,即使 A1 和 B1 使用“.”显示在表中。作为分隔符。

结果其他语言 2046,40,504,30(字符串)

我已经尝试了以下代码:

Worksheets(sheetname).Range("A1").NumberFormat = "@"

Application.DecimalSeparator = "."
Application.UseSystemSeparators = False

谁能赐教?

问候,

M

【问题讨论】:

    标签: excel vba settings delimiter


    【解决方案1】:

    小数分隔符问题

    • 以下内容适用于我(我使用逗号作为小数分隔符)。

    守则

    Option Explicit
    
    Sub DecimalSeparatorIssue()
        
        Const sheetname As String = "Sheet1"
        Dim sep As String
        sep = Application.DecimalSeparator
        Dim wb As Workbook
        Set wb = ThisWorkbook ' The workbook containing this code.
        
        Dim ws As Worksheet
        Set ws = wb.Worksheets(sheetname)
        
        If sep = "." Then
            ws.Range("C1") = CStr(ws.Range("A1")) & "," & CStr(ws.Range("B1"))
        Else
            ws.Range("C1") = Replace(CStr(ws.Range("A1")), sep, ".") & "," _
                           & Replace(CStr(ws.Range("B1")), sep, ".")
        End If
    
    End Sub
    

    此外,您还可以使用Format 函数进行改进,例如:

    Sub DecimalSeparatorIssue()
        
        Const sheetname As String = "Sheet1"
        Dim sep As String
        sep = Application.DecimalSeparator
        Dim wb As Workbook
        Set wb = ThisWorkbook ' The workbook containing this code.
        
        Dim ws As Worksheet
        Set ws = wb.Worksheets(sheetname)
        
        If sep = "." Then
            ws.Range("C1") = Format(ws.Range("A1").Value, "0.00") & "," _
                           & Format(ws.Range("B1").Value, "0.00")
        Else
            ws.Range("C1") = Replace(Format(ws.Range("A1").Value, "0.00"), sep, ".") _
                           & "," _
                           & Replace(Format(ws.Range("B1").Value, "0.00"), sep, ".")
        End If
    
    End Sub
    

    【讨论】:

      最近更新 更多