带特殊字符串值的excel vba字符(10)

带特殊字符串值的excel vba字符(10),vba,excel,Vba,Excel,我有一个包含数据的范围,我正在连接线函数,我希望输出如下 范围(“A1:A3”)有A、B、C,我希望单个单元格中的输出为 -A -B -C 我使用以下代码;不知怎的,它没有给我想要的输出。有人能调查这件事并提供帮助吗 Dim X As String,cell as Range For Each Cell in Range("A1:A3") If(Len(cell.value)>0) Then X="-" & X & CHAR(10) & Cell.Valu

我有一个包含数据的范围,我正在连接线函数,我希望输出如下

范围(“A1:A3”)有A、B、C,我希望单个单元格中的输出为

-A
-B
-C
我使用以下代码;不知怎的,它没有给我想要的输出。有人能调查这件事并提供帮助吗

Dim X As String,cell as Range
For Each Cell in Range("A1:A3")
  If(Len(cell.value)>0) Then
  X="-" & X & CHAR(10) & Cell.Value
End If
Next
Range("B1").Value= X

Range("B1").WrapText = True
Range("B1").Columns.AutoFit
试试这个

X = X & "-" & cell.Value & Chr(10)
全文:

Sub ab_notsonull()
Dim X As String, cell As Range
For Each cell In Range("A1:A3")
  If (Len(cell.Value) > 0) Then
  X = X & ("-" & cell.Value & Chr(10))
End If
Next
Range("B2").Value = Left$(X, Len(X) - 1)
Range("B2").WrapText = True
Range("B2").Columns.AutoFit
End Sub

... 并可能使用
Left(X,Len(X)-1)
删除循环结束后的最后一个字符?(为了去掉最后的LF并避免单元格在末尾显示一个空白的“行”)或者,可能更简单的方法是,将LF放在连接的开头,在将值放入单元格时只使用
Mid(x,2)
。您的
Mid(x,Len(x),1)=vbNullString
实际上没有任何作用,因为
vbNullString
的长度为0。为字符串的
Mid
赋值只会更改由长度参数、替换字符串中的字符数和字符串末尾的字符数中较小者确定的字符数。您需要使用
X=Left(X,Len(X)-1)
X
中实际删除一个字符。是的,运算符技巧对空替换无效(测试不佳)。选择字符串Left$而不是较慢的变体Left。