[[20170505122315]] 『複数のシートで非表示マクロを使いたい』(yingli20) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『複数のシートで非表示マクロを使いたい』(yingli20)

1つのシートで非表示にするマクロがあります。

Sub 送り状非表示マクロ()

  Dim 行番号 As Long

  '行を隠す
  For 行番号 = 13 To 43
    If Cells(行番号, 6).Value = "" Then
      Cells(行番号, 1).EntireRow.Hidden = True
    End If
  Next 行番号
End Sub

これを同じbook内の複数シートで同時に使えるようにしたいです。

お願い致します。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 マクロ実行するタイミングで、処理対象のシートは、その時点での ActiveSheet と考えていいのですか?
 また、すべてのシートが対象ですか? それとも、この処理ができるシートは、これとこれとこれ といったように限定されていますか?

(β) 2017/05/05(金) 12:29


そのマクロはどのモジュールに書かれていますか?
シートモジュールに書いてあるならそのシート限定ですが、
標準モジュールに置いてあれば、
現在アクティブなシートに作用するので、
どのシートでも使えるはずですよ。
# コードに直したい部分がないわけではないが、とりあえず。
# 行の表示、非表示問題は流行なんですかね。
(γ) 2017/05/05(金) 12:31

 追加質問です。

 「同時に」という意味ですが、
 1回の実行で、複数のシートに対して一度に処理してしまうということですか?
 それとも、あくまで1回の実行では、1つのシートに対してのみ処理するのですか?

( β) 2017/05/05(金) 12:33


βさんYさんお返事ありがとうございます!

 >マクロ実行するタイミングで、処理対象のシートは、その時点での ActiveSheet と考えていいのですか?
処理対象のシートは、その時点での ActiveSheetですが、1つのBookに4つのシートが入っており、この中の
工場、工場 (控)のシートにのみマクロをかけたいです。

>そのマクロはどのモジュールに書かれていますか?
標準モジュールに置いています。

>「同時に」という意味ですが、

 1回の実行で、複数のシートに対して一度に処理してしまうということですか?

1回の実行で工場、工場 (控)のシートにマクロをかけたいです。

よろしくお願いします。
(yingli20) 2017/05/05(金) 13:11


 要するに、複数のシートに対して繰り返し処理をしたいということですか。
 次のようなコードを参考に作ってみてください。

 Sub test()
     Dim s As Variant
     Dim ws As Worksheet

     For Each s In Array("Sheet1", "Sheet2")
         Set ws = Worksheets(s)
         ws.Range("A1").Value = 1
     Next
 End Sub

(γ) 2017/05/05(金) 13:47


γさんお返事ありがとうございます。

すいません、全くどう参考にしていいか分かりません。

詳しく教えていただきたいです!

よろしくお願いします!
(yingli20) 2017/05/05(金) 14:06


繰り返しの構文は理解できていますか?
手元にExcelVBAのテキストは持っていますか?

また、ワークシート.セル範囲というワークシートを指定したセルの書き方は理解していますか?
Worksheets("Sheet1").Range("A1").Value = 1
といった書き方です。
つまり、オブジェクト、プロパティ、メソッドといった用語の理解は大丈夫ですね?
(γ) 2017/05/05(金) 14:18


 Sub test()
     Dim 行番号 As Long
     Dim s As Variant
     Dim ws As Worksheet

     For Each s In Array("工場", "工場 (控)")
         Set ws = Worksheets(s)
         '行を隠す
         For 行番号 = 13 To 43   ' 固定なのかどうか不明です。
             If ws.Cells(行番号, 6).Value = "" Then
                 'ws.Cells(行番号, 1).EntireRow.Hidden = True
                 ws.Rows(行番号).Hidden = True 'こうするほうが普通でしょうか。
             End If
         Next 行番号
     Next
 End Sub

(γ) 2017/05/05(金) 14:22


γさん、返信ありがとうございます。

マクロの記録から中々抜け出せず、ネットで必要な事だけ検索していましたので、
全く理解出来ていません。

質問だけでもまともに出来るよう、勉強します。

コードありがとうございます。やりたい処理ができました。

(yingli20) 2017/05/05(金) 14:40


ネットは便利なものであるけれど、楽なほうに楽なほうに向かってしまうリスクがあります。
これを人間の進歩と考える立場もありますが、
じっくり取り組む時間をとることも大切です。
Do your best !
(γ) 2017/05/05(金) 14:49

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.