こんばんは。
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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/2】 国民的アニメ『サザエさん』が打ち切りになった理由を教えてください
- ・ちょっと先の未来クイズ第5問
- ・【お題】ヒーローの謝罪会見
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 1セル当りの文字数が2...
-
DataGridViewの特定列に入力さ...
-
GUIDの重複
-
エクセルシート名の制限を変更...
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
.netで、ibm漢字で書かれたテキ...
-
エクセルVBA:日付データの変換...
-
Excel VBA メール作成について ...
-
printfの%eで指数部分の桁数を...
-
UCS-2の一覧表が欲しい
-
GetWindowTextでアドレスバーか...
-
(C言語・配列)date[i]の分散...
-
2バイト文字の判定はString#get...
-
COBOLのCOMP形式について
-
char str[256]の256の意味は?
-
マクロの書き換え箇所がわかり...
-
COBOL PICTUREで X,S,Vの意味
-
c言語 Bitについて
-
VBSでテキストファイルの文字列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DataGridViewの特定列に入力さ...
-
Excel 1セル当りの文字数が2...
-
ListView重複データ削除
-
EXCEL VBA 並び替えについて
-
Excel VBA チェックツール
-
GUIDの重複
-
配列xのヒストグラムを求める...
-
excel vbaについて
-
javaのデータからヒストグラム...
-
粒度分布と粒径分布のヒストグ...
-
VB.netのTableAdapter.InsertQu...
-
ExcelVBAで、コメントのサイズ...
-
エクセルシート名の制限を変更...
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
COBOLのCOMP形式について
-
char str[256]の256の意味は?
-
Excel VBA メール作成について ...
-
バイト列とバイナリ列の違いが...
-
printfの%eで指数部分の桁数を...
おすすめ情報