首页 > 解决方案 > VBA excel 连接中的额外空格

问题描述

我有一个 VBA 代码,我必须在其中循环某个范围并使用一些连接填充它,但我的 VBA 代码添加了不需要的空格。例如,让我们假设以下示例:

code = "NV"
ac = "Curncy"

With wsNew

Set rng = .Range(Cells(2, 2), Cells(2, 2).End(xlDown))

For Each r In rng
    
    If r.Value = 17 Or r.Value = 18 Or r.Value = 19 Then
        
        r.Offset(, 1) = code + r.Offset(, -1).Value + Str(Right(r.Value, 1)) + " " + Str(r.Value) + _
        " " + ac
    
    Else
    
        r.Offset(, 1) = code + r.Offset(, -1).Value + Str(Right(r.Value, 1)) + _
        " " + ac
    
    End If

Next r

End With

对于第一个单元格(r示例中的变量),我有r.Value = 18并且r.offset(,-1).Value = U我期望NVU8 18 Curncy为我的r.Offset(, 1). 相反,代码添加了空格,我得到NVU 8 18 Curncy了 U 和 8 之间的一个空格(将被删除)和 8 和 18 之间的 2 个空格,而不仅仅是一个。

标签: excelvbaconcatenation

解决方案


Str文档:

将数字转换为字符串时,始终为数字的符号保留前导空格。如果 number 为正数,则返回的字符串包含前导空格并隐含加号。

不要使用Str, 和使用&来连接,而不是+. &强制两个表达式的字符串连接。

r.Offset(, 1).Value = code & r.Offset(, -1).Value & Right(r.Value, 1) & " " & r.Value & _
        " " & ac

推荐阅读