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ランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
実行時エラー3001「引数が間違...
-
VBSで変数の宣言はできないので...
-
VBS実行時エラー オブジェクト...
-
VB6+SQL サーバー 2000 で 実行...
-
IEのダウンロード通知バーのVBA...
-
なぜこんな初歩的なVBAのIf文で...
-
EXCEL VBAマクロ中断でデバッグ...
-
【Excel VBA】マクロをボタンに...
-
ADODB.Streamを使用してUTF-8を...
-
ExcelVBAで、ユーザー定義型は...
-
VBAがブレークモードになっ...
-
ExcelVBA Range クラスの Page...
-
VBAでのMATCH関数
-
OLEDB.NETで接続できない
-
ExcelVBAでのエラー回避
-
Excelで下記のようにマクロを作...
-
EXCEL/VBAで、自分のPCだけエラ...
-
マクロについて教えてください...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
【Excel VBA】マクロをボタンに...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAでのエラー
-
マクロについて教えてください...
-
ExcelVBA Range クラスの Page...
-
実行時エラー3001「引数が間違...
-
VBS実行時エラー オブジェクト...
-
VBAがブレークモードになっ...
-
OLEDB.NETで接続できない
-
プロシージャ名の取得
-
EXCEL VBAマクロ中断でデバッグ...
-
VBSで変数の宣言はできないので...
-
ADODB.Streamを使用してUTF-8を...
-
実行時エラー -'-2147417848
-
AccessVBAでExcelを起動し、罫...
-
VB6+SQL サーバー 2000 で 実行...
-
Outlook.ApplicationをCreateOb...
-
Application.ActiveInspectorで...
おすすめ情報