アプリ版:「スタンプのみでお礼する」機能のリリースについて

Warksheetにある全てのsheetに同じマクロをいっぺんに実行する方法はあるんでしょうか?

A 回答 (3件)

Sub Macro1()


Dim ws As Worksheet
For Each ws in Worksheets
Call Macro2(ws)
Next ws
End Sub

Sub Macro2(ws As Worksheet)
With ws
'処理実行
End ws
End Sub

こういう流れじゃないですか?
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。大変わかりやすかったです。質問の仕方がわかりずらかったですね。

お礼日時:2016/10/29 00:54

こんにちは。



純粋に、VBAプログラムとしての質問だと解釈しますと、

>いっぺんに実行する方法はあるんでしょうか?

ないわけではありません。プログラム的に同時にするVBAマクロもありますが、数少ないです。いわゆる3D系に属するもので、VBAでは不要の技です。

他は、ほんの短い時間ですが、時系列に処理されていますが、それを感覚的にどう捉えるかということにもなるかと思います。

人によっては、たった0.2秒がけしからん、と言っている人もいます。
ものすごい動体視力だと思いますが、マクロというのは、自動実行ですから、一定時間に終え、結果として、完了すればよいとするしかないと思います。

別の質問でも、全シート(例外はある)に、同じ設定をしたいというものがありましたが、その場合、シートのインスタンス(作り出されたもの)ではなく、元のクラス側(設計図)での処理になります。例えば、たい焼きの柄パターンを直すなら、その鋳型で直すということです。
    • good
    • 0

いっぺんにの意味が同時にという意味なら、同時に実行はできません。


Warksheetにある全てのsheetを順番に処理するならできます。
以下のソースは全てのシートを左から順に処理するマクロです。
Dim sh As Worksheet '1つのシート
Dim i As Long
'全シート分繰り返す
For i = 1 To Worksheets.Count
Set sh = Worksheets(i)
'このシートに関する処理
Next
    • good
    • 1
この回答へのお礼

ご回答ありがとうございました^ ^

お礼日時:2016/10/29 00:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!