下記の質問の続きでお教えください。Excel VBAについてです。

http://q.hatena.ne.jp/1271412744

A列をキーにソートを行いたいです。先頭行、1行目は見出しです。データは2行目からです。
A列からJ列を選択し、A列をキーに昇順ソート。先頭行は見出し。何行入っているかはわからないので、A~Jを選択。

A列に入っているデータは"20100401"といったような形式で入っています。ただし、文字列、数値が入り乱れています。なので"20100401"というデータは文字列型数値型一緒として考えます。よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/04/24 13:50:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:GreenStar No.1

回答回数192ベストアンサー獲得回数46

ポイント60pt

現在テスト環境が無いのですが

With ActiveSheet

の下に下記を加えてみてください。

Cells.Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    SortMethod:=xlPinYin, DataOption:=xlSortTextAsNumbers
id:akaired

.Cells.Selectとすると、

実行時エラー 1004:アプリケーションの定義またはオブジェクト定義のエラーです

と表示されてしまいます。

With ActiveSheet

.Columns("A:J").Select

Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _

OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _

=xlPinYin, DataOption1
=xlSortTextAsNumbers

実行時エラー 1004:

並べかえの参照が正しくありません。参照が並べ替えるデータ内にあることと、最優先されるキーボックスが空白でないことを確認してください。

と表示されてしまいます。

2010/04/19 18:14:51
  • id:GreenStar
    もしかして画面表示を止めたりしてます?

    下記のように相対指定に変更してみてください。
    .Cells.Select
    あるいは
    .Columns("A:J").Select
  • id:GreenStar
    .Cells.Select
    1004を出す理由については見当ついていません。

    =xlPinYin, DataOption1
    =xlSortTextAsNumbers
    はてなの画面上だけ二行に分かれてしまってますがメールでは正しく届いていますので、これは問題ないでしょう。

    xlGuess
    一行目もデータと認識してしまう場合がありますのでxlYesを奨めます。

    現状、以上です。
    私の回答させていただいたコード以外に付け加えているものなどがありましたら書き込んでおいてください。私以外の人からの回答が期待できるかもしれません。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません