Excel VBA - 如何检测用户在工作表上选择整行并区分是不是选择了多行?

Posted

技术标签:

【中文标题】Excel VBA - 如何检测用户在工作表上选择整行并区分是不是选择了多行?【英文标题】:Excel VBA - how to detect user selecting an entire row on the worksheet and distinguish if multiple rows are selected?Excel VBA - 如何检测用户在工作表上选择整行并区分是否选择了多行? 【发布时间】:2022-01-16 23:35:31 【问题描述】:

如何检测用户是否选择了工作表上的整行?我想返回选择了哪一行,以便我可以自动化一些例程 - 例如复制与该行关联的数据。

我只希望自动化适用于工作表上的任何一行,而不是多行。请问我该如何实现?

如果有人能指出我正确的方向,不胜感激。

谢谢

【问题讨论】:

docs.microsoft.com/en-us/office/vba/api/… 【参考方案1】:

将其放入您希望它运行的工作表的代码中。 您还可以检查“地址”属性以确定选择的位置。这不是一个完整的答案,但它应该可以帮助您入门。

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim bEntireRow As Boolean
With Target   
    bEntireRow = .Address = .EntireRow.Address
End With
    If bEntireRow = True Then
        MsgBox (Target.Rows.Count & " Rows Selected")
    End If
End Sub

【讨论】:

啊,我明白了。目标是我传递的参数。选择更加全球化。我不只是匆忙地将这段代码与一些谷歌搜索混合在一起。不是我……从来没有。 谢谢。我尝试了代码,它可以很好地检测用户选择的行。如果选择了多行,我将尝试看看如何检测和过滤掉。 @Tofulover - 添加额外检查 If Target.Rows.Count = 1。如果你想限制到特定的行,例如第 2 行,添加另一个:And Target.Row = 2 感谢你们两位。代码运行良好! 仅供参考,如果您将代码放入 cmets,请将其括在 `(与 ~ 相同的键)中以使其显示为代码。 While mind = blown DrinkCoffee()

以上是关于Excel VBA - 如何检测用户在工作表上选择整行并区分是不是选择了多行?的主要内容,如果未能解决你的问题,请参考以下文章

从 Excel VBA 生成包含表单域的 PDF

如何使用 VBA 检测不适合 Excel 单元格的值?

Excel VBA如何填充不同工作表中的值

如何在 VBA 中锁定 Excel 单元格?

如何允许用户在 Select2 上选择空字符串

如何在表格上选择并计算出现的一些值