校正选定范围
Correcting a selected range
我有一个 sheet,其中用户 select 是一个不连续的单元格区域(即 E4、F6、G7),我希望能够将其转换为(A4、A6、 A7) 保留行号但改变列。我只想 return 一个值,但是如果它们 select 同一行中有多个单元格,或者更糟的是 select 整行。我的 VBA 有点不熟练,无法弄清楚这个
.Offset
和 .Resize
不适用于 non-continous 范围。但是你可以使用一些技巧来完成它。
想法是将用户的选择转换为整行选择并将其与 A 列的范围相交。结果是 A 列中的单元格与最初选择的行相交。
Option Explicit
Public Sub SelectAInSelectedRows()
Dim UserSelection As Range
Set UserSelection = Selection.EntireRow ' make user's selection entire row
Dim SelectARange As Range
Set SelectARange = Intersect(UserSelection.Parent.Columns("A"), UserSelection) ' intersect the rows with column A
' select the resulting range in column A
SelectARange.Select
End Sub
将其放入相关的工作表模块中。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not (Intersect(ActiveSheet.Columns(1), Target) Is Nothing) Then Exit Sub
ActiveSheet.Cells(Target.Row, 1).Value2 = Target.Value2
End Sub
你也可以检查输出单元格是否不为空,然后更改
我有一个 sheet,其中用户 select 是一个不连续的单元格区域(即 E4、F6、G7),我希望能够将其转换为(A4、A6、 A7) 保留行号但改变列。我只想 return 一个值,但是如果它们 select 同一行中有多个单元格,或者更糟的是 select 整行。我的 VBA 有点不熟练,无法弄清楚这个
.Offset
和 .Resize
不适用于 non-continous 范围。但是你可以使用一些技巧来完成它。
想法是将用户的选择转换为整行选择并将其与 A 列的范围相交。结果是 A 列中的单元格与最初选择的行相交。
Option Explicit
Public Sub SelectAInSelectedRows()
Dim UserSelection As Range
Set UserSelection = Selection.EntireRow ' make user's selection entire row
Dim SelectARange As Range
Set SelectARange = Intersect(UserSelection.Parent.Columns("A"), UserSelection) ' intersect the rows with column A
' select the resulting range in column A
SelectARange.Select
End Sub
将其放入相关的工作表模块中。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not (Intersect(ActiveSheet.Columns(1), Target) Is Nothing) Then Exit Sub
ActiveSheet.Cells(Target.Row, 1).Value2 = Target.Value2
End Sub
你也可以检查输出单元格是否不为空,然后更改