【发布时间】:2016-12-22 08:04:27
【问题描述】:
我有一个关于在工作表的特定单元格中显示选择值的问题。(我们暂时称它为 J1)
因此,如果用户拖动选择(通过鼠标)A1,A2,A3,A4。 J1 值将显示 "A1:A4",然后使用一些 VBA 代码连接这些单元格以显示由“;”分隔的单元格值。
问题是,当用户选择不按顺序排列的单元格时(通过按住 CTRL),就像A1,A5,A11。 J1 值将在我连接时显示 "A1,A5,A11",它给出“#VALUE”错误。
我们可以在这里用单元格值替换每个单元格引用吗?
并保留其间的“逗号”。
稍后我们可以Subtitute逗号加上“;”
如果我的问题似乎有点无知,请原谅:)
我的选择代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rng As Range
Dim s As String
Set rng = Application.Selection
If rng.Count < 2 Then
Range("H1").Value = Cells(Target.Row, Target.Column).Value
Else
Range("H1").Value = rng.Address
End If
End Sub
连接代码:
Function ConcatenateRange(ByVal cell_range As Range, _
Optional ByVal seperator As String) As String
Dim cell As Range
Dim lastrow
Dim choice
Dim lastrowmodified
Dim rangy
Dim newString As String
Dim cellArray As Variant
Dim i As Long, j As Long
cellArray = cell_range.Value
For i = 1 To UBound(cellArray, 1)
For j = 1 To UBound(cellArray, 2)
If Len(cellArray(i, j)) <> 0 Then
newString = newString & (seperator & cellArray(i, j)) & ";"
End If
Next
Next
If Len(newString) <> 0 Then
newString = Right$(newString, (Len(newString) - Len(seperator)))
End If
ConcatenateRange = newString
End Function
【问题讨论】:
标签: vba excel excel-formula