VBA加载项-对选定的单元格计数

VBA加载项-对选定的单元格计数,vba,excel,Vba,Excel,我有一个现有的外接程序,它有其他功能可应用于许多excel文件。我想在选择x个单元格的情况下执行此操作,如果它超过100个计数,则会提示用户一条消息。此操作应适用于我将要打开的任何工作簿(并将外接程序导入工作簿)。我已经看过一些关于应用程序事件的链接,但我仍然不明白它应该如何为我工作。如果有人能帮我,我将不胜感激 我引用了以下代码 1 - 2 - 代码: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim tot

我有一个现有的外接程序,它有其他功能可应用于许多excel文件。我想在选择x个单元格的情况下执行此操作,如果它超过100个计数,则会提示用户一条消息。此操作应适用于我将要打开的任何工作簿(并将外接程序导入工作簿)。我已经看过一些关于应用程序事件的链接,但我仍然不明白它应该如何为我工作。如果有人能帮我,我将不胜感激

我引用了以下代码

1 - 2 - 代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim totalCells As Long
totalCells = ActiveSheet.Selection.Cells.Count

If totalCells > 100 Then
    MsgBox (totalCells)
End If

End Sub

好的,我复制了Chip Pearson的示例,并将此代码添加到我的加载项的工作簿中,似乎工作正常。看看它是否适合你

Private WithEvents App As Application

Private Sub App_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  Dim totalCells As Long
  totalCells = Target.Cells.Count
  If totalCells > 100 Then MsgBox totalCells
End Sub

Private Sub Workbook_Open()
  Set App = Application
End Sub

用户如何在不先选择的情况下删除整行或整列?用户不会删除行或列。当用户选择超过100个单元格时,将弹出消息提示。我希望只要工作簿用户导入外接程序,打开的所有工作簿用户都可以使用此操作。您需要在应用程序级别捕获和处理事件。阅读tis Hi@cyboashu,我在发布这个问题之前已经阅读了这个网站。我在excel上尝试了他们的示例,但当我打开新工作簿时,它不起作用。嗨,DaveU,它仍然不起作用。此代码位于外接程序模块3下(我尝试将其放在此工作簿下,但仍然不起作用)。工作表SelectionChange是一个工作表事件,因此代码必须位于您正在使用的工作表下,例如,例如Sheet1。是否可以将其放在外接程序下,以便用户正在处理的所有工作簿/工作表都可以使用?问题是OP希望在任何工作表上使用外接程序,我认为在这种情况下需要创建类模块。@Ryszard,你可能是对的,我试图让事情简单化——在这种情况下,这可能不是个好主意。