
並べ替えのプログラムを以下のように組んだところ,「myRng.Sort」の行で,
「実行時エラー'1004':アプリケーション定義またはオブジェクト定義エラーです」
と出てしまいます。
このエラーコードが「シートが正しく指定されていない」ということは理解したのですが,WITH文内
であるので正しく指定しているのでは?と考えています.ご教授いただけると助かります。
Sub ソート()
Dim lRow As Long
Dim lCol As Long
Dim myRng As Range
Dim 基準列 As Long
ThisWorkbook.Activate
With ActiveSheet
基準列 = .Cells(23, 1)
lRow = .Cells(Rows.Count, 11).End(xlUp).Row
lCol = .Cells(11, Columns.Count).End(xlToLeft).Column
Set myRng = .Range(.Cells(11, 11), .Cells(lRow, lCol))
myRng.Sort
Key = .Cells(11, 10 + 基準列)
End With
End Sub
No.4ベストアンサー
- 回答日時:
こんにちは!
横からお邪魔します。
>myRng.Sort
>Key = .Cells(11, 10 + 基準列)
この部分がエラーなのでは?
>myRng.Sort key1:=.Cells(11, 10 + 基準列)
とするのが普通だと思います。
昇順での並び替えなのだと思うので、そのままで大丈夫だと思いますが、
丁寧にやれば、昇順なのか?・降順なのか?までを記載するコトをおススメします。
※ お示しのコードから判断すると10行目が項目行になっているのですかね?
もしそうであれば自分の場合は↓のようなコードにします。
myRng.Sort key1:=.Cells(11, 10 + 基準列), order1:=xlAscending, Header:=xlNo
※ 未検証なので、的外れならごめんなさい。m(_ _)m
ご回答有り難うございます.
提供していただいたコードに修正してみたところ,正しく動作いたしました.
また,
myRng.Sort key1:=.Cells(11, 10 + 基準列)
のみでも動作を確認しました.やはりkeyの改行がエラーの原因のようです.
貴重なご意見感謝いたします.
No.5
- 回答日時:
1004のエラーというのは、
myRng.Sort ここしかないと思うのですが……
No.4 さんも述べていますが、「パラメータ」は、省略できないです。できれば、これをパターン化したほうがより間違いが少ないと思います。Sort メソッドの方法自体は、ヘルプでもみていただいたほうがよいでしょう。AutoFilter と同じではありません。
Set myRng = .Range(.Cells(11, 11), .Cells(lRow, lCol))
'または、
'Set myRng = .Cells(11, 11).CurrentRegion
If 基準列 <= 0 Then 基準列 = 1
'------------パターン化---------
With myRng
.Sort Key1:=.Cells(1, 基準列), Order1:=xlAscending
End With
'---------------------------------
With myRng で、くくると
.Cells(1, 基準列) 必ず、myRng の中では、1行目になります。
No.3
- 回答日時:
あれ?
>With ActiveSheet
としているのにActiveSheetがアクティブな状態ではない時ってあり得るのかな?
それにSort自体は適用シートがアクティブでなくとも動いたと思いますが、最近のは動かないのかな?(うちのは古~いので)
No.2さんのリンク先では『Withステートメントの使い方を失敗している』と書かれているだけでは?(その辺も最近のは変わったならごめんなさい)
ご回答有り難うございます.解決いたしました.
keyを改行していたことで正常に認識されていなかったものと思われます.
貴重な情報の提供感謝いたします.
No.2
- 回答日時:
メソッドは、対象のシートがアクティブでないとエラーが発生します。
「VBA 1004 メソッド名(myRng.Sort)」で検索
http://www.excel.studio-kazu.jp/kw/2008120301302 …
ご回答有り難うございます.解決いたしました.
keyを改行していたことで正常に認識されていなかったものと思われます.
貴重な情報の提供感謝いたします
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) 追記する列を増やしたい 2つのデータを検索・照合して元データにないデータを下記マクロで商品名を追記し 9 2022/10/05 10:50
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルだけ結果がおかしい...
-
エクセルのdatedif関数を使って...
-
エクセルのVBAで集計をしたい
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
エクセル ドロップダウンリスト...
-
【関数】同じ関数なのに、エラ...
-
Office2021のエクセルで米国株...
-
【マクロ】列を折りたたみ非表...
-
9月17日でサービス終了らし...
-
【マクロ】アクティブセルの時...
-
ページが変なふうに切れる
-
【条件付き書式】シートの中で...
-
【マクロ】3行に上から下に並...
-
【マクロ】オートフィルターの...
-
【マクロ】EXCELで読込したCSV...
-
【画像あり】オートフィルター...
-
他のシートの検索
-
エクセルの循環参照、?
-
Excelファイルを開くと私だけVA...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報