校正选定范围

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

你也可以检查输出单元格是否不为空,然后更改