
こんばんは。
EXCEL VBAでデータの並び替えを作りましたが、実行すると実行時エラー(1004)となってしまいます。原因を探りましたが分からないため、問題点のご指導をお願いします。
・1行目はタイトル行で、2行目以降にデータが入っております(現在は200行までデータが入っています)。。
・A1~T1にタイトルのそれぞれの項目が入っています。
・D1セルに「商品名のカナ」が入っており、カナで並び替え(昇順)をしたいと思っています。
'データの最終行をEndrowに格納する
EndRow = Worksheets("基礎データ").Range("A1").End(xlDown).Row
Worksheets("基礎データ").Select
Worksheets("基礎データ").Range(Cells(1, 1), Cells(EndRow, 20)).Select
Selection.Sort Key1:=Range("D1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
プロシージャの一部を抜粋しました。
Selection.Sort Key1~以降の記述は、「マクロの記録」で記録したものを貼り付けました。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
Windows XP SP3, Excel 2003で試してみました。
その結果、「実行時エラー '1004':」が出る2つのケースがありました。
1.プロシージャが「基礎データ」以外のシートモジュールにある
この場合は「アプリケーション定義またはオブジェクト定義のエラーです。」というメッセージになります。
原因は、シートモジュール内でワークシートオブジェクトを省略した場合に、アクティブなシートではなくそのモジュールのシートが採用されるというところにありました。
対策の1つとしては、シートモジュールには他のシートを扱うコードは置かない、というのがありますし、私もそうしています。
でも、根本的対策としてはオブジェクトをきちんと指定するのが一番です。
今回は以下のようにしたところエラーは出なくなりました。
EndRow = Worksheets("基礎データ").Range("A1").End(xlDown).Row
Worksheets("基礎データ").Select
Worksheets("基礎データ").Range(Worksheets("基礎データ").Cells(1, 1), Worksheets("基礎データ").Cells(EndRow, 20)).Select
Selection.Sort Key1:=Worksheets("基礎データ").Range("D1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
メンテナンス性を考えるとWithステートメントあるいはワークシートオブジェクト型変数を使った方がよさそうです。
また、他のブックと併用する場合など、ブックも指定したほうがいいこともあります。。
2.並べ替えるセル範囲にセルの結合がある
この場合、プロシージャが標準モジュールにあるなら「この操作には、同じサイズの結合セルが必要です。」というわかりやすいメッセージが出ますので、おそらく質問者様はこの質問を立てるまでもなく解決されることと思います。
それ以外のモジュールの場合は「アプリケーション定義またはオブジェクト定義のエラーです。」という通常のメッセージでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) Excel_マクロ_現在開いているシートにマクロを実行したいです 1 2023/02/14 23:54
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 1セル当りの文字数が2...
-
DataGridViewの特定列に入力さ...
-
GUIDの重複
-
VBAを使って複数条件からの合計...
-
char str[256]の256の意味は?
-
10Mバイトて文字数に すると何...
-
UTF-8で5~6バイトになる文字コ...
-
エクセルシート名の制限を変更...
-
COBOLのCOMP形式について
-
postで送られてきたパラメータ...
-
Excel VBA メール作成について ...
-
ファイルに書き込めない/ファ...
-
64bit対応
-
printfの%eで指数部分の桁数を...
-
:(コロン)のKeyCode
-
C++ Builderで文字列をバイトに...
-
【Excel VBA】10進数を2進数に...
-
URLは最高何文字まで可能なので...
-
機種依存文字をチェックしたい。
-
VBAでUnicodeしか存在しない文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 1セル当りの文字数が2...
-
DataGridViewの特定列に入力さ...
-
ListView重複データ削除
-
GUIDの重複
-
光散乱のシミュレーションにつ...
-
VBAにて複数の重複データを取得...
-
EXCEL VBA 並び替えについて
-
配列xのヒストグラムを求める...
-
Excel VBA チェックツール
-
VBA 最終行のひとつしたの行に...
-
エクセルシート名の制限を変更...
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
Excel VBA メール作成について ...
-
COBOLのCOMP形式について
-
char str[256]の256の意味は?
-
機種依存文字をチェックしたい。
-
バイト列とバイナリ列の違いが...
-
stable diffusionのエラー
-
ピクセル,dpiから容量(バイト...
おすすめ情報