EXCELのマクロについて質問です。

ひとつのブックに
「イメージ1」「項目1」
「イメージ2」「項目2」
「イメージ3」「項目3」
の6シートが存在し、

「項目1」「項目2」「項目3」にのみ
共通の処理を行いたい場合
どのようなマクロを記述すれば良いでしょうか。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/06/05 15:36:20
  • 終了:2006/06/05 18:40:39

回答(4件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982006/06/05 15:52:00

ポイント10pt

マクロはシートごとに 記述できますので、それぞれのシートに マクロを記述すればいいでしょう。

http://www.tsucchy.com/Excel/index_e.html

http://www.sanynet.ne.jp/~awa/excelvba/kouza.html

id:ko-c9999

回答ありがとうございます。

シート毎の記述は避けたいのです。

2006/06/05 18:34:23
id:ota2244 No.2

ota2244回答回数77ベストアンサー獲得回数42006/06/05 16:07:36

ポイント30pt

http://www.hatena.ne.jp/

URLはダミーです。

このようにすれば大丈夫です。

Dim objSheet As Worksheet

'シートを検索

For Each objSheet In Worksheets

Select Case objSheet.Name

Case "項目1", "項目2", "項目3"

'ここに共通処理を記述します

Case Else

End Select

Next

id:ko-c9999

回答ありがとうございます。

この回答は、希望にかなり近いです。

2006/06/05 18:37:28
id:gong1971 No.3

gong1971回答回数443ベストアンサー獲得回数682006/06/05 16:09:40

ポイント25pt

行いたい共通の処理はどのようなものでしょうか?

それによって回答が変わってきますので、

具体的な処理の内容があった方が、

より詳細な回答が付くかと思いますよ。


例えば、同じフォーマットで作成された表で、

罫線などの書式を一度に変えたいという事であれば、

作業グループという機能を使用します。使用方法は以下の通り。


  1. シート「項目1」を選択します。
  2. [Ctrl]キーを押しながらシート「項目2」を選択します。
  3. [Ctrl]キーを押しながらシート「項目3」を選択します。
  4. 罫線などの書式を設定します。
  5. 作業グループ状態を解除する為、シート「イメージ1」を選択します。
  6. 「項目1」「項目2」「項目3」の各シートに 4. で行った設定が反映されています。

なお、作業グループを使用する際の注意として、

作業グループのままにしてしまうと1つのシートのみに行おうとした

変更が複数のシートに適用されてしまいます。作業グループでの操作が

終わったら必ず別のシートを選択して作業グループ状態を解除する

ようにしてください。

http://excimer.hp.infoseek.co.jp/HP-Excel/e-SelectS.htm

id:ko-c9999

回答ありがとうございます。

希望とは違うのですが、面白い手法ですね。

2006/06/05 18:38:13
id:villain No.4

villain回答回数174ベストアンサー獲得回数122006/06/05 16:12:45

ポイント25pt

処理するシートを先頭にまとめて並べてFor~To~Nextループで

回せばいいんじゃないでしょうか。


項目1 項目2 項目3 イメージ1 イメージ2 イメージ3


' 例
'  最初のシートから3つめのシートまでシート名をA1セルに
'  書き込む
Sub Repeat()
    For I = 1 To 3
        Sheets(I).Range("A1").Value = Sheets(I).Name
    Next
End Sub


先頭にまとめられない場合は1つ飛びにしてStepでとばすとか...。


http://q.hatena.ne.jp/answer

id:ko-c9999

回答ありがとうございます。

「1つ飛びにしてStepでとばす」やり方なら

希望にかなり近いです。

2006/06/05 18:39:11
  • id:villain
    あと、数字が半角数字なら以下のような方法もあります。

    Sub Repeat()
    For I = 1 To 3
    Sheets("項目" & I).Range("A1").Value = Sheets("項目" & I).Name
    Next
    End Sub

    これは、"項目"+Iのシート名を対象にします。

  • id:ko-c9999
    より希望に近い物になりました。
    ありがとうございます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません