
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
こんにちは。
No.5の回答者です。
>すみませんが、ご回答の内容が理解できません。
やっている内容は、なかなか、VBAとしては、レベルの高いことをされているようです。
いろいろ検証して回答を書いてみましたが、おそらく、私のNo.5の延長のような書き方をしたら、分からないと言われそうです。それは、基本的な所が分かっているのか不安になっています。
ポイントとしては、
・「シートモジュール」と「標準モジュール」の使い方の違い
・Private キーワードというもの
・CommandButton などのActiveX コントロールと、フォームコントロールのオブジェクトの違い
さて、以下の場合は、どこが問題か。
>Private Sub CommandButton4_Click() 'これがどこにあるのか?
>Sheets("Sheet3").Select
'Worksheets("Sheet3")ではなさそうです。それを別の所持っていってしまうやり方では、うまくいくとは思えません。CommandButton は、基本的にシートに従属されたものだからです。
>Application.Run "'2更新.xls'!AAA"
>Application.Run "'2更新.xls'!BBB"
>End Sub
Excelのほとんどのマクロは、標準モジュールで使われるものです。シートモジュールでは、シートオブジェクトを親オブジェクトとするので、そのシートだけを管理するイベント型がほとんどで、他のシートなどをアクティブにして流用することはないのです。
No.5
- 回答日時:
割り込ませていただきます。
コマンドボタンは、何かは分かりません。シートごとに作るというのは、ActiveX コントロールではないかと思います。Windows 10 の大幅な改変以降は、フォームコントロールを使うことが多くなりました。取り扱いも、セキュリティも簡単だからです。ActiveX コントロールのコマンドボタンでないのでしたら、また違う内容になってしまいます。
本来、その周辺を丁寧に書いていただけたらよかったと思います。
Private Sub CommandButton1_Click()
となっているものは、
Call Worksheets("Sheet1").CommandButton1_Click
では呼び出せません。なぜなら、このCall 以下を、プログラム名とするには、かなり高度なテクニックが必要になってしまうからです。
それぞれ、コマンドボタンの名称が違うなら、このようになります。
Sub Test_Command1()
Worksheets("Sheet1").CommandButton1.Value = True
Worksheets("Sheet2").CommandButton1.Value = True
End Sub
一緒でしたら、このように書きます。
Sub Test_Command2()
Dim sh As Worksheet
For Each sh In Worksheets
sh.CommandButton1.Value = True
Next
End Sub
なお、例えば、シートモジュールの場合、コマンドの中が、以下のようになっていても、この上位オブジェクトは、ActiveSheet ではなく、その書かれたシートが上位オブジェクトですから、問題なく、その上位シート上のRange("A1") に値が書き込まれるはずです。ActiveSheet を意識しなくてよいです。
Private Sub CommandButton1_Click()
Range("A1").Value = "myDAT" '上位オブジェクトは、その書き込まれたシート
End Sub
ありがとう、いままで作ったマクロをそれぞれのシートでは動いており、それをドミノにして稼働させたいが途中で止まってしまう、すみませんが、ご回答の内容が理解できません。
自分の場合はこうなっております。
Sub ドミノ記録()
'
' ドミノ記録 Macro
'
Call 1
Call 2
Call 3
Call 4
Call 5
Call 5のプログラムで止まってしまう、中身は
Private Sub CommandButton4_Click()
Sheets("Sheet3").Select
Application.Run "'2更新.xls'!AAA"
Application.Run "'2更新.xls'!BBB"
End Sub
これをどうすればいいということなのでしょうか?

No.4
- 回答日時:
No2です。
>シート1)で作ったマクロのボタン、シート2)で作ったマクロのボタン、シート3)で作ったマクロのボタンはそれぞれのボタンで動くが それらを一括して1)2)3)を一括して
>特定のシート 例えばシート4)にマクロボタンを一個を作り それを押すことにより 先のそれぞれのシートのマクロが連動して作動できるようにするにはどうすればいいかということです。
シート1で作ったマクロのボタンから呼び出されるマクロ名をマクロ①
シート2で作ったマクロのボタンから呼び出されるマクロ名をマクロ②
シート3で作ったマクロのボタンから呼び出されるマクロ名をマクロ③
シート4で作ったマクロのボタンから呼び出されるマクロ名をマクロ④
とすると
マクロ④の中身は
call マクロ①
call マクロ②
call マクロ③
とすれば良いです。
もし、上記のことを既に行っていて、期待した結果にならないということであれば、考えられる原因の1つとして、
アクティブシートを前提としたマクロを作っていることがあります。
マクロ①のボタンから呼び出した時点では、シート1がアクティブシートになります。
マクロ②のボタンから呼び出した時点では、シート2がアクティブシートになります。
マクロ③のボタンから呼び出した時点では、シート3がアクティブシートになります。
ところが、
マクロ④のボタンから呼び出した時点では、シート4がアクティブシートになります。
シート4がアクティブシートの状態で、マクロ①を実行すると、シート1を対象にした動作ができなくなります。
以下同様。
これらの事象を回避するためには、アクティブシートを前提にしたマクロの書き方をやめて、
シート名を指定したマクロの書き方に変える必要があります。

No.3
- 回答日時:
> Call 自分が作ったプログラム名
その「自分が作ったプログラム」とやらは、どこに置かれていますか?
同じブック内にあるのにそういう動きをする場合は、プログラムの内容に問題があるはずです。もし別のブック内にある場合はCallでは動かないので、Runを使ってください。詳細は以下に。
http://officetanaka.net/excel/vba/tips/tips09.htm
ありがとう。
シート1)で作ったマクロのボタン、シート2)で作ったマクロのボタン、シート3)で作ったマクロのボタンはそれぞれのボタンで動くが それらを一括して1)2)3)を一括して
特定のシート 例えばシート4)にマクロボタンを一個を作り それを押すことにより 先のそれぞれのシートのマクロが連動して作動できるようにするにはどうすればいいかということです。
RUNでもうまくいかなかった。

No.2
- 回答日時:
No1の方の言われる通りです。
稼働する場合と稼働しない場合があるとのことですが、考えらえるのが
①そもそもcallすらされていない
②callされているが、そのあと、期待した動作をしていない
の2点が考えらえます。
もっと、解決につながる具体的な、アドバイスがほしいのであれば、
callしている箇所
callされているプロシージャの全てを提示したほうが良いかと。
ありがとう やってみます。
問題は
シート1)で作ったマクロのボタン、シート2)で作ったマクロのボタン、シート3)で作ったマクロのボタンはそれぞれのボタンで動くが それらを一括して1)2)3)を一括して
特定のシート 例えばシート4)にマクロボタンを一個を作り それを押すことにより 先のそれぞれのシートのマクロが連動して作動できるようにするにはどうすればいいかということです。
マクロボタンの作り方が問題?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/10 14:24
- 会社・職場 アルバイトの研修期間について 4 2022/11/03 03:07
- 所得・給料・お小遣い 給与が12月稼働分が翌年1月に、1ヶ月遅れで振り込まれている場合その年の源泉徴収票には12月稼働分の 2 2022/05/29 02:34
- Excel(エクセル) エクセルでのVBA 2 2022/08/03 06:48
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- 電子レンジ・オーブン・トースター 電子レンジの扉にキッチンペーパー1枚挟まった状態で稼働してしまいました。 電波もれがあった場合、2m 3 2022/07/27 16:44
- Excel(エクセル) エクセルで休憩時間を引く時と、引かない時の数式 3 2022/11/05 11:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのVBAで集計をしたい
-
【マクロ】【相談】Excelブック...
-
コマンドボタンがデザインモー...
-
エクセルを開いたとき常に同じ...
-
【 Excel】シートの見出しに自...
-
EXCELでマクロを使わずに図形の...
-
Excel:複数シートから条件に合...
-
マクロを複数シートに実行する...
-
EXCELでワークシートを開いたら...
-
エクセルでシートの並び替えで...
-
EXCELの起動時に常に同じ...
-
VBAで条件によってシート見出し...
-
EXCEL起動と同時にワークシート...
-
エクセルのチェックボックス
-
エクセルで複数のSheetを一括フ...
-
ExcelのSheetに作られたMacro1...
-
エクセル・複数のシートを一度...
-
Excelのマクロの呼び出し元を知...
-
EXCELのエラー
-
【Excel】複数あるシート上の住...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
エクセルのVBAで集計をしたい
-
エクセルを開いたとき常に同じ...
-
マクロを複数シートに実行する...
-
【 Excel】シートの見出しに自...
-
Excelのマクロの呼び出し元を知...
-
EXCELでマクロを使わずに図形の...
-
マクロ 各シートの決められた位...
-
エクセルでシートの並び替えで...
-
EXCELのエラー
-
EXCELでワークシートを開いたら...
-
メッセージボックスでシート名...
-
マクロを特定の複数シートで実...
-
VBA シート名を先月の名前に...
-
マクロで複数シートに条件付き...
-
エクセルで、マクロボタンの表...
-
VBAで条件によってシート見出し...
-
【Excel】複数あるシート上の住...
-
エクセルVBAでcmbBoxのプロパテ...
-
エクセルのチェックボックス
おすすめ情報