EXCEL VBA | 单元格等于select
(我们现在称之为J1)所以,如果用户通过鼠标拖动selectA1,A2,A3,A4
。 J1
值将显示"A1:A4"
,然后用一些VBA代码连接这些单元格以显示由“;”分隔的单元格值。 问题是,当用户select不正确的单元格时(通过按住CTRL键),就像A1,A5,A11
。 J1
值连接时会显示"A1,A5,A11"
,会给出“#VALUE”错误。
我们可以用单元格值replace这里的每个单元格引用吗? 并将“逗号”留在原来的位置。 那么以后我们可以Subtitute
逗号“”来Subtitute
逗号。
对不起,如果我的问题似乎有点无知:)
我的select代码:
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
如果我理解正确,你想要一个单元格,说J1
来包含所有选定单元格的值 ,用分号隔开? 如果是这样,你可以修改你的第一sub
,
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim rng As Range Set rng = Application.Selection Dim vCell as Range Range("J1").Value = "" ' Cycle through cells in range For each vCell in rng ' Use if so that J1 doesn't start with a semi colon If Range("J1").Value = "" Then Range("J1").Value = vCell.Value Else Range("J1").Value = Range("J1").Value & ";" & vCell.Value End If Next vCell End Sub
另一种方法是将string数组与JOIN
函数结合使用。 这适用于非连续的select:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim c as Range, i as Integer Dim arr() As String ReDim arr(0 To Selection.Count - 1) As String If Selection.Count < 2 Then Range("J1").Value = Selection.Value Else For Each c In Selection.Cells arr(i) = c.Value i = i + 1 Next c Range("J1").Value = Join(arr, ";") End if End Sub
- Django的CSV导出..在列表中迭代
- 如何更改excel舍入的小数(默认值是.50,我需要它在小数点前的.20的无限小数点处舍入或舍入)
- 使用“Openxml writer”在Excel中合并单元格
- 我如何从2011-01-02到2100-01-01每周添加一周的第一周到一个MySQL表通过while循环?
- 如何在VBA中inputCMD中的多行代码?
- 等价的C#函数Excels Norm.S.Inv函数
- 使用VBA将颜色添加到整个excel行
- ExecuteExcel4Macro方法在Mac上的Excel 2011中失败,并显示1004错误
- VBA:在由date组成的正上方的行上使用匹配function自动select单元格