Excel VBA 質問スレッド №1956 (解決済)

シート指定しているがシートを開いていないと動作しない

投稿者 : ポムの忌     投稿日時 : 2024/07/08(Mon) 21:34:47     OS : 未指定     EXCEL : 未指定
こちらを参考にした下記コードがあります。

Sub macro()
    Dim rng As Range, i As Long
    Dim namae As Variant
    namae = Worksheets("マクロ操作").Range("B22")
    
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        If WorkSheets("シフト表").Cells(i, "AA") = namae Then
           WorkSheets("シフト表").Rows(i & ":" & i + 31).Delete
        Exit For
        End If
    Next i
    
End Sub

マクロ操作シートを開いた状態で上記コードを実行すると、指定した行が削除されません。なにも削除されていません。
シフト表シートを開いた状態で上記コードを実行すると、指定した行が削除されます。
シートを指定しているはずなのに、何故シートを開いた状態でないと動作しないのか困っています。
コードがおかしいでしょうか?
お手数をおかけしますがよろしくお願いします。

スポンサーリンク
[返信 1] Re : シート指定しているがシートを開いていないと動作しない
投稿者 : さんこう     投稿日時 : 2024/07/08(Mon) 21:49:29
>シートを指定しているはずなのに

シートを指定していないところがあるからかと思います。

[返信 2] Re : シート指定しているがシートを開いていないと動作しない
投稿者 : ポムの忌     投稿日時 : 2024/07/08(Mon) 21:56:59
■[返信 1] さんこうさん(2024-07-08 21:49:29)の記事
> >シートを指定しているはずなのに

> シートを指定していないところがあるからかと思います。


ではなぜシート開いている場合には動作するのでしょうか?

[返信 3] Re : シート指定しているがシートを開いていないと動作しない
投稿者 : さんこう     投稿日時 : 2024/07/08(Mon) 22:26:14
>ではなぜシート開いている場合には動作するのでしょうか?

シートを指定していない場合は、アクティブシート(開いているシート)を指定したことになります。

[返信 4] Re : シート指定しているがシートを開いていないと動作しない
投稿者 : higeru     投稿日時 : 2024/07/09(Tue) 09:03:09
4,7,8行目はすべて Cells や Range の前に親オブジェクトであるワークシートが明示的に指定されているのに対して、6行目だけ(アクティブシートの)Cells になっているからです。

[返信 5] Re : シート指定しているがシートを開いていないと動作しない
投稿者 : ポムの跽     投稿日時 : 2024/07/09(Tue) 23:30:26
さんこう様、higeru様。
おかげさまで解決しました。
教えていただきありがとうございました。

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2025-07-03 15:35:16 )
タイトルとURLをコピーしました