Range类的VBA排序方法失败

标签 vba excel sorting runtime-error

我知道这个主题有几个主题,但没有一个答案有助于解决这个错误。

我正在尝试使用三个键对表进行排序,但收到错误“运行时错误'1004':Range 类的排序方法失败”

我尝试将“Range(“L2”)”更改为“.Range(“L2”)”并收到错误,“编译错误:无效或不合格的引用”

我尝试指定实际范围而不是使用列,我删除了最后两个键并只尝试了第一个键,但仍然收到运行时错误。

shtData.Activate

shtData.Range(Range("A2"), Range("Z8000").End(xlUp)).Sort _
Key1:=Range("L2"), Order1:=xlAscending, _
Key2:=Range("M2"), Order2:=xlAscending, _
Key3:=Range("B2"), Order3:=xlAscending, _
Header:=xlYes

如果您有任何建议,我将不胜感激。我昨天有这个工作,我的 excel 崩溃了,没有恢复我所做的更改,我不知道为什么我今天不能让它工作。

最佳答案

您很可能在“Z”列中没有数据

如果数据行范围可以按“A”列而不是空单元格安全地调整大小,则如下所示

Option Explicit

Sub main()
    Dim shtData As Worksheet

    Set shtData = Worksheets("Data") '<--| some setting of 'shtData'
    With shtData
        .Range("Z2", .Cells(.Rows.Count, "A").End(xlUp)).Sort _
        Key1:=.Range("L2"), Order1:=xlAscending, _
        Key2:=.Range("M2"), Order2:=xlAscending, _
        Key3:=.Range("B2"), Order3:=xlAscending, _
        Header:=xlYes
    End With
End Sub

关于Range类的VBA排序方法失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40917356/

相关文章:

excel - 如何在窗体窗口打开时保持 VBA 中的代码运行?

excel - 将工作簿设置为只读

vba - 如何使用vba在Excel中将多个长行拆分为较小的行?

mysql - Excel VBA 查询表参数因空值而失败

java - 二维字符串数组中基于整数的排序

JavaScript:对嵌套数组进行排序

vba - Excel VBA - 粘贴为值

excel - 验证在 Outlook 全局地址列表中找到的电子邮件地址的 VBA 代码

string - VBA excel - 查找字符串通配符

multithreading - 如何并行排序?