Excel VBA根据选择选择多个单元格

标签 excel vba

我想根据选择选择多个单元格。
这是我的代码:

Private Sub CommandButton1_Click()

Selection.EntireRow.Select

End Sub
我想选择多个单元格中的前四列行,而不是整行。如何实现?
this is my Excel worksheet
enter image description here

最佳答案

选择非连续范围的行

  • 将代码复制到标准模块中,例如Module1 .
  • 在您的命令按钮单击事件中,按以下方式使用任一过程名称:
    Private Sub CommandButton1_Click()
        selectRowsOfListObject
    End Sub
    
    或者
    Private Sub CommandButton1_Click()
        selectRowsOfFirstFourColumns
    End Sub
    
  • 第一个过程将只选择ActiveSheet 中第一个(结构化)表中选定单元格的行。 .表格数据( DataBodyRange )之外的任何单元格都将被忽略。
  • 第二个过程将选择前四列中所选单元格的所有行范围,在ActiveSheet的前四列中。 .在前四列之外选择的任何单元格都将被忽略
  • 当代码将引用“包含”命令按钮的工作表时,每个或两个代码都可以与任何工作表上的命令按钮一起使用。
  • 如果您希望另一个工作表上的命令按钮始终引用第一个工作表,您将不得不创建对第一个工作表的引用:
    代替
    Set ws = ActiveSheet
    
    使用例如
    Set ws = wb.Worksheets("Sheet1")
    
  • 为了更好地理解差异,您可以为第二个代码添加另一个命令按钮,然后测试它们中的每一个。

  • 代码
    Option Explicit
    
    Sub selectRowsOfListObject()
        Dim wb As Workbook
        Set wb = ThisWorkbook
        Dim ws As Worksheet
        Set ws = ActiveSheet
        Dim tbl As ListObject
        Set tbl = ws.ListObjects(1)
        If Selection.Worksheet.Name = ws.Name Then
            If TypeName(Selection) = "Range" Then
                Dim rng As Range
                Set rng = Intersect(Selection, tbl.DataBodyRange)
                If Not rng Is Nothing Then
                    Set rng = Intersect(rng.Rows.EntireRow, tbl.DataBodyRange.Rows)
                End If
                If Not rng Is Nothing Then
                    rng.Select
                End If
            End If
        End If
    End Sub
    
    Sub selectRowsOfFirstFourColumns()
        Dim wb As Workbook
        Set wb = ThisWorkbook
        Dim ws As Worksheet
        Set ws = ActiveSheet
        If Selection.Worksheet.Name = ws.Name Then
            If TypeName(Selection) = "Range" Then
                Dim rng As Range
                Set rng = Intersect(Selection.Rows.EntireRow, _
                                    ws.Columns(1).Resize(, 4))
                If Not rng Is Nothing Then
                    rng.Select
                End If
            End If
        End If
    End Sub
    

    关于Excel VBA根据选择选择多个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64522660/

    相关文章:

    vba - 将导致错误的对象返回给全局错误处理程序

    Excel Activex 列表框可在选择同一单元格时打开和关闭,而无需先单击另一个单元格

    Excel 2007 VBA - 数据透视表字段列表???产生错误

    xml - 将 XML 文档中的数据解析为 Excel 工作表

    excel - 自动将 B 列上的链接添加到 Excel 中 A 列中的字符串

    excel - 按值对 Excel 列进行排序

    excel - Worksheet_Change事件中的VBA错误处理程序

    c# - 如何验证文件是否为有效的 Excel 电子表格?

    Excel 2013 : multiple pivot tables on one sheet (BELOW) each other

    excel - IF Function : if either 1, 2, 3, 4, 5 然后复制到另一张纸