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