【问题标题】:Double Clicking header to sort with merged cells VBA双击标题以合并单元格VBA排序
【发布时间】:2018-12-07 21:53:17
【问题描述】:

我有一张表格,其中有第 4 行中的列的标题。我有一个代码,当我双击第 4 行中的一个单元格时,它会按该单元格对数据进行排序。我现在遇到的问题是,在 B 列中,单元格与下面的行合并。因此,例如第 4 行和第 5 行合并,第 6 行和第 7 行等。由于这些合并的单元格,我拥有的代码将不再让我排序。有人可以帮忙吗?

这是我使用的代码

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

lr = Cells(Rows.Count, "B").End(xlUp).row
lc = Cells(4, Columns.Count).End(xlToLeft).Column
If Target.row = 4 And Target.Column <= lc Then Range(Cells(4, "B"), Cells(lr, lc)).Sort Key1:=Cells(4, Target.Column), Header:=xlYes 'Order1:=xlDescending

End Sub

根据要求提供我的工作表图像

【问题讨论】:

  • 您无法对合并的单元格进行排序,除非该范围内的所有单元格大小相同。你必须先解决这个问题。
  • 你能展示你的工作表图片吗?
  • 我已添加图片
  • 我修改答案。

标签: excel vba


【解决方案1】:

试试

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim lc As Integer
    lc = Cells(4, Columns.Count).End(xlToLeft).Column
    If Target.Row = 4 And Target.Column <= lc Then
        sortdescent Target.Column - 1, lc
    End If
End Sub

模块代码

Sub sortdescent(x As Integer, col As Integer)
    Dim vDB
    Dim strTemp()
    Dim r As Integer, c As Integer, i As Integer, j As Integer
    Dim m As Integer

    ReDim strTemp(1 To 2, 1 To col)
    vDB = Range("b5", Cells(Range("c" & Rows.Count).End(xlUp).Row, col))
    r = UBound(vDB, 1)
    c = UBound(vDB, 2)


    For i = 1 To r Step 2
        For j = 1 To r Step 2
            'If vDB(j, x) > vDB(i, x) Then 'Ascent
            If vDB(j, x) < vDB(i, x) Then 'Descent

                For m = 1 To c
                    strTemp(1, m) = vDB(i, m)
                    strTemp(2, m) = vDB(i + 1, m)
                    vDB(i, m) = vDB(j, m)
                    vDB(i + 1, m) = vDB(j + 1, m)
                    vDB(j, m) = strTemp(1, m)
                    vDB(j + 1, m) = strTemp(2, m)
                Next
            End If
        Next j
    Next i
    Range("b5").Resize(r, c) = vDB
End Sub

【讨论】:

  • 我收到此代码错误。我把它放在代码工作表中。 ByRef 参数类型不匹配
猜你喜欢
  • 1970-01-01
  • 2016-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 2021-05-10
相关资源
最近更新 更多