我有一個關於在我的工作表中顯示特定單元格內的選擇值的問題(現在我們稱之爲J1) 那麼,如果用戶通過拖動選擇(通過鼠標)A1,A2,A3,A4
。 J1
值將顯示"A1:A4"
,之後用某些VBA代碼連接這些單元格以顯示由「;」分隔的單元格值。 問題是,當用戶選擇的單元格不按順序時(通過按住CTRL鍵),就像A1,A5,A11
一樣。 J1
值連接時會顯示"A1,A5,A11"
,它會給出「#VALUE」錯誤。EXCEL VBA |單元格等於選擇
我們可以用單元格值來替換這裏的每個單元格引用嗎? 並將「逗號」保持原樣。 後來我們可以用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
是的!確切地說,這是我想要實現的。像魅力一樣工作。非常感謝你的配偶:) –
@MohamedHussien沒問題,歡呼回饋 – Wolfie