並べ替えのプログラムを以下のように組んだところ,「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ランキング
-
エクセルで離れた列を選択して...
-
「段」と「行」の違いがよくわ...
-
VLOOKUPの列番号の最大は?
-
LEFT関数とIF関数の組み合わせ...
-
エクセルで住所を県と市・郡と...
-
Excelの行数、列数を増やしたい...
-
CSVファイルの「0落ち」にVBA
-
えABのある列って
-
エクセルマクロの組み方
-
データシートビューのタイトル...
-
エクセルで最初の行や列を開け...
-
エクセルマクロPrivate Subを複...
-
別のブック最終行最終列の次へ...
-
エクセル マクロ 範囲指定で...
-
Alt+Shift+↑を一括で行うには、...
-
エクセル マクロ 範囲の値を上...
-
土日の列幅の自動変更を教えて...
-
エクセルマクロで表の途中の集...
-
VBA
-
エクセルでセル12個間隔で合...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
「段」と「行」の違いがよくわ...
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
CSVファイルの「0落ち」にVBA
-
エクセルで複数列の検索をマク...
-
Excelの行数、列数を増やしたい...
-
エクセルマクロの組み方
-
エクセルマクロPrivate Subを複...
-
リストからデータを紐付けしたい
-
エクセルのソートで、数字より...
-
エクセルで住所を県と市・郡と...
-
VBAで別ブックの列を検索し、該...
-
VBA
-
Excel文字列一括変換
-
エクセル 重複 隣の列 一番...
-
列方向、行方向の定義
-
Alt+Shift+↑を一括で行うには、...
-
VBAで結合セルを転記する法を教...
おすすめ情報