【问题标题】:Run time error 1004 the sort reference is not valid?运行时错误 1004 排序引用无效?
【发布时间】:2020-12-16 06:04:49
【问题描述】:

我正在运行来自 vb.net 的 Excel 宏来对数据范围进行排序,我收到了附件图像中的此错误

我的代码是

Dim ws As Worksheet
Dim lastRow As Long
Set ws = Worksheets("Result_T10")
lastRow = Worksheets("Result_T10").Range("C2" & Cells(Rows.count, "C").End(xlUp).Row)
with ws
ws.Range("C2" & lastRow).Sort Key1:=Range("C2" & lastRow), Order1:=xlAscending, Header:=xlYes
End With

那么代码有什么问题呢?

谢谢,问候

莫赫布拉比布

【问题讨论】:

  • 在对范围进行字符串提及时不要忘记:。范围如C2:C10A1:A20 等。另外,检查stackoverflow.com/a/38882823/9199828
  • 你真的是指vb.net吗?在我看来像 VBA
  • @FunThomas,它是 VBA,但从 VB.Net 接口运行它

标签: excel vba vb.net sorting


【解决方案1】:

您将最后一行视为整个范围并添加到范围中。您需要将最后一行隔离为行号,然后创建范围。

Dim ws As Worksheet
Dim lastRow As Long
Set ws = Worksheets("Result_T10")
lastRow = ws.Cells(Rows.count, "C").End(xlUp).Row
with ws
ws.Range("C2:C" & lastRow).Sort Key1:=Range("C2"), Order1:=xlAscending, Header:=xlYes
End With

【讨论】:

    【解决方案2】:

    这行错了

    lastRow = Worksheets("Result_T10").Range("C2" & Cells(Rows.count, "C").End(xlUp).Row)
    

    由于lastRowLong 数据类型,它只能存储数字值。您当前的行返回一个范围而不是行。所以在行尾添加.row,如下所示。

    lastRow = Worksheets("Result_T10").Range("C2" & Cells(Rows.count, "C").End(xlUp).Row).Row
    

    你可以简化这条线

    lastRow = ws.Cells(Rows.count, "C").End(xlUp).Row
    

    【讨论】:

    • @Harun24HR,我按写的调整了 lastRow,但我仍然有同样的错误
    • 你能把你的数据截图放在表格里吗?
    猜你喜欢
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    相关资源
    最近更新 更多