2016-12-01 11 views
0

このトピックにはいくつかのスレッドがありますが、このエラーの解決に役立つ回答はありません。RangeクラスのVBAソートメソッドが失敗しました

私は3つのキーを使用してテーブルを並べ替えるが、エラーを受け取り、しようとしています

「ファイル名を指定して実行時エラー 『1004』:RangeクラスのSortメソッドは失敗しました」

を私は「範囲(」L2" を変更してみました) "to" "to" .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 

ご意見がありましたら、感謝します。私は昨日働いていましたが、私のエクセルは墜落してしまいました。私が行った変更を元に戻すことはできませんでした。なぜ今日働くことができないのか分かりません。

+0

2行目にヘッダーがありますか? – Rdster

+0

@Rdsterはい、私のヘッダーは2行目です。 – cheshire

+1

範囲を完全修飾する必要があります。範囲を完全修飾する必要はありません。私。 'shtData.Range(" A2 ")、shtData.Range(" Z8000 ")。End(xlUp))。Sort'を実行し、' Keys'と同じものを返します。 – BruceWayne

答えて

2

あなたおそらく持っている「Z」の欄にはデータがありません

データ行を安全に列によってサイズにすることができる範囲ならば、それは可能である場合

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 
+0

'With'を使用して通話が良い – BruceWayne

+0

@ user3598756ありがとう!私はデータがYで終わるように、私は昨日コラムを削除したことを完全に忘れていました。 – cheshire

+0

あなたは歓迎です – user3598756

1

を次のように「」ではない空のセルはその後に行きますあなたは将来、再び列の量を変えることになるかもしれません、あなたは何かのようにすることができます。

With shtData 
Range(Range("A2"), Cells(Range("A8000").End(xlUp).Row, Range("ZZ2").End(xlLeft).Column) 

このようにして、行だけでなく使用している多くの列のソート領域が自動的にサイズ変更されます。

+0

素晴らしいです!アドバイスをいただきありがとうございます。私はこのデータ範囲を継続的に調整してプログラムを動作させるので、これはもっとうまくいくでしょう。 – cheshire

関連する問題