1. ホーム
  2. vba

[解決済み] VBA RangeクラスのSortメソッドに失敗しました。

2022-02-12 17:20:47

質問

このトピックに関するスレッドがいくつかあることは知っていますが、どの回答もこのエラーを解決する助けにはなりません。

3つのキーを使ってテーブルをソートしようとしているのですが、「"ランタイムエラー '1004'」というエラーが表示されます。RangeクラスのSortメソッドに失敗しました"。

"Range("L2")" を ".Range("L2")" に変更してみたところ、"Compile error.というエラーが表示されました。Invalid or unqualified reference".というエラーが発生しました。

列を使用する代わりに実際の範囲を指定してみたり、最後の2つのキーを削除して最初のキーだけを試してみましたが、まだランタイムエラーが発生します。

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

何かご指摘があれば、ぜひお願いします。昨日これを動作させたところ、エクセルがクラッシュしてしまい、行った変更を回復できなかったのですが、なぜ今日動作させることができないのかが分かりません。

解決方法を教えてください。

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