
VBA初心者です。
下記のようなコードを書いてB11~BH41をソートしたいのですが「オブジェクトが必要です」というエラーが出て上手く動いてくれません。
B11~BH41は横のセルと結合しているものがいくつか含まれているため一度結合を解除して再び結合させており、B11の列には日付、L11の列には時間を入れています。
Sub sort2keys()
Dim KeyCells As Range
Dim i As Integer
Dim x As Integer, y As Integer
x = Target.Column
y = Target.Row
Set KeyCells = Range("B11:B41")
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
'日付が消去された場合は行に入力されているものも消去 start
If Cells(y, 2).Value = "" Then
Application.ScreenUpdating = False
Range(Cells(y, 8), Cells(y, 21)).ClearContents
Range(Cells(y, 26), Cells(y, 35)).ClearContents
Range(Cells(y, 40), Cells(y, 60)).ClearContents
Application.ScreenUpdating = True
End If
'日付が消去された場合は行に入力されているものも消去 endS
ActiveSheet.Unprotect
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Range("B11:BH41").UnMerge
Range("B11:BH41").sort key1:=Range("B11"), order1:=xlAscending, Key2:=Range("L11"), Order2:=xlAscending
i = 11
While i < 42
Range(Cells(i, 2), Cells(i, 3)).Merge
Range(Cells(i, 4), Cells(i, 5)).Merge
Range(Cells(i, 6), Cells(i, 7)).Merge
Range(Cells(i, 8), Cells(i, 11)).Merge
Range(Cells(i, 12), Cells(i, 16)).Merge
Range(Cells(i, 17), Cells(i, 21)).Merge
Range(Cells(i, 22), Cells(i, 25)).Merge
Range(Cells(i, 26), Cells(i, 30)).Merge
Range(Cells(i, 31), Cells(i, 35)).Merge
Range(Cells(i, 36), Cells(i, 39)).Merge
Range(Cells(i, 40), Cells(i, 41)).Merge
Range(Cells(i, 42), Cells(i, 45)).Merge
Range(Cells(i, 46), Cells(i, 49)).Merge
Range(Cells(i, 50), Cells(i, 60)).Merge
If Worksheets(1).Cells(i, 2) <> "" And Worksheets(1).Cells(i, 8).Value = "" Then
Application.Goto Reference:=Worksheets(1).Cells(i, 8), Scroll:=False
End If
i = i + 1
Wend
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
ActiveSheet.Protect
End If
End Sub
試しにSheet2のB11~BH41に適当な数値を入れて
Sub test()
Range("B11:BH41").sort key1:=Range("B11"), order1:=xlAscending, Key2:=Range("L11"), Order2:=xlAscending
End Sub
として実行した場合はちゃんと並び替えが出来ました。
解決方法ご教示よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
こんにちは
>sortしようとしたときに「オブジェクトが必要です」というエラーが出る
それって本当にSortメソッドで出ているエラーですか??
ざっと見たところ、
>x = Target.Column
で、エラーになりそうですけれど・・・?
単に、変数「Target」が未定義なためにエラーが起きているだけではないでしょうか?
それとも、グローバルな変数として定義されているのでしょうか?
もしそうであるなら、実行時のTargetの内容はどうなっていますか?
こんにちは、ご教示ありがとうございます。
以前、
Range("B11:BH41").sort key1:=Range("B11"), order1:=xlAscending, Key2:=Range("L11"), Order2:=xlAscending
だった部分は
Call Range("B11:BH41").Sort(key1:=Range("B11"), order1:=xlAscending)
でした。その時は「オブジェクトが必要です」と出ていなかったのでそこがおかしいのかと思っていたのですが、一行目の
Sub sort2keys()
の部分も
Private Sub Worksheet_Change(ByVal Target As Range)から変更していたのを忘れていました。
1行目の部分を
Private Sub Worksheet_Change(ByVal Target As Range)
に戻したら正常に動いたのでSortは関係ありませんでした。
すみませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) ローマ字、ハイフン付きの並び替え ローマ字抽出方法 Excelマクロ 4 2022/04/01 14:10
- Visual Basic(VBA) エラーコード1004 6 2022/06/09 14:12
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー -'-2147417848
-
実行時エラー 438になった時の...
-
Excel VBA で End Subのところ...
-
なぜこんな初歩的なVBAのIf文で...
-
Excelで=IFで始まるStringがセ...
-
エクセルVBAについて
-
Accessで定型フォーマットのExc...
-
VBAで、定数式が必要ですのエラ...
-
アプリケーション定義またはオ...
-
ACCESS VBA Excelにデータ出力...
-
マクロについて教えてください...
-
VBAがブレークモードになっ...
-
プロシージャ名の取得
-
【Excel VBA】マクロをボタンに...
-
ExcelVBA Range クラスの Page...
-
AccessのクエリーでDate関数の...
-
エクセルのマクロでCells(j,i)...
-
コンバインエラー
-
なぜエラーになるのでしょうか...
-
日本語環境下で作成したマクロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
VBAがブレークモードになっ...
-
なぜこんな初歩的なVBAのIf文で...
-
ExcelVBA Range クラスの Page...
-
EXCEL VBAマクロ中断でデバッグ...
-
実行時エラー -'-2147417848
-
【Excel VBA】マクロをボタンに...
-
Outlook.ApplicationをCreateOb...
-
VBAでのエラー
-
マクロについて教えてください...
-
実行時エラー3001「引数が間違...
-
実行時エラー48発生時のDLL特定...
-
VB6+SQL サーバー 2000 で 実行...
-
エクセルエラー13型が一致しま...
-
VBS実行時エラー オブジェクト...
-
ADODB.Streamを使用してUTF-8を...
-
INSERT INTOステートメント構文...
-
VBAで、定数式が必要ですのエラ...
-
OLEDB.NETで接続できない
-
VBSで変数の宣言はできないので...
おすすめ情報