シート内の特定のセル内に選択値を表示する質問があります(今はJ1としましょう) したがって、ユーザーがドラッグして選択した場合(マウスで)A1,A2,A3,A4
。 J1
の値は"A1:A4"
と表示され、その後いくつかのVBAコードIでこれらのセルを連結して ";"で区切られたセルの値を表示します。 問題は、ユーザーが(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
はい!まさに、これは私が達成しようとしていたものです。魅力のように働く。あまりにも多くの仲間に感謝:) –
@モハメドフーシャン問題はない、返信のための歓迎 – Wolfie