Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11 Pro : Microsoft 365)
VBAのコードを含む二つのEXCEL-Book
投稿日時: 22/04/06 18:00:34
投稿者: S.Kos

みなさま、こんには。
 
VBAのコードを含む二つのEXCEL-Book、AとBがあります。
 
Aを起動した後、開発→デザインモードで、VBAを止めます(デザインモード)
次にBを起動するとき、VBAのモードは、どーなっているのでしょう・・?
 
過去を振り返ると、
  Aのサイズが小さければBのVBAは動くが、
  Aのサイズが大きいと、BのVBAも止まったまま(デザインモード)
のように思えます。
 
この受け止めは、正しいのでしょうか?
そうだとして、Aのサイズのメドは、とのくらいでしょうか?

回答
投稿日時: 22/04/06 18:14:56
投稿者: WinArrow
投稿者のウェブサイトに移動

説明の中で、よくわからないところがあります。

S.Kos さんの引用:

VBAのコードを含む二つのEXCEL-Book、AとBがあります。
 
Aを起動した後、開発→デザインモードで、VBAを止めます(デザインモード)
 

 
↑の最終行の中の
>Aを起動した
とは、具体的にどのような操作でしょうか?
 
>開発→デザインモード
デザインモード
は、「コントロール」の中の「デザインモード」のことですか?
 
 
 
 

回答
投稿日時: 22/04/06 18:19:56
投稿者: WinArrow
投稿者のウェブサイトに移動

追加の質問
>VBAを止めます
とは、具体的にどのような操作でしょうか?
 
>Aのサイズ
とは、何でしょう?
 
>この受け止めは、正しいのでしょうか?
多分、なにか勘違いしていると思いますよ!

投稿日時: 22/04/06 18:30:29
投稿者: S.Kos

あぁWinArrowさん、早速のRES感謝です。
 
>Aを起動する、
とは、普通に"A.xlsm"を開くこと、に他なりません。
 
>開発→デザインモード
もありきたり(?)の作業です。
開いたAの画面上部に並ぶ、ファイル、ホーム、、開発、ヘルプ、の中から、
開発を選択してリボンを開き、デザインモード、を押します。
VisualBasicを押してコード画面を開くと、最上位に「A.xsm[デザイン]」と表示されている状態です
 

投稿日時: 22/04/06 18:34:01
投稿者: S.Kos

WinArrowさん、行き違いになってしまいました・・・
 
>VBAを止めます
とは、ひとつ上に書いたように、VBAコード編集画面で[デザイン]と表示させること、です
 
>Aのサイズ
とは、"A.xlsm"のファイルサイズ、に他なりません。
 

回答
投稿日時: 22/04/06 18:49:10
投稿者: WinArrow
投稿者のウェブサイトに移動

S.Kos さんの引用:

>Aを起動する、
とは、普通に"A.xlsm"を開くこと、に他なりません。

了解しました。
「ブック開く」と「起動」は、まったく異なります。
用語を正確に使わないと、誤解を招きます。
気を付けてください。
 
S.Kos さんの引用:

>開発→デザインモード
もありきたり(?)の作業です。
開いたAの画面上部に並ぶ、ファイル、ホーム、、開発、ヘルプ、の中から、
開発を選択してリボンを開き、デザインモード、を押します。
VisualBasicを押してコード画面を開くと、最上位に「A.xsm[デザイン]」と表示されている状態です

 
>「デザインモード」は、「コントロール」をデザインモードにするためのボタンで、
今回関係ないと思います。
コード画面=コードを編集するための画面を「VBE」と呼びます。
VBEの画面は、コードが実行されていませんので、
止まっているか?といえば、止まっています。
 
と、ファイルサイズとコード実行との関係は、無いと思ってもよいのではないでしょうか?
要は、ファイルサイズで、どちらかのブックのコードを実行制御していることは無いと思います。

回答
投稿日時: 22/04/06 19:00:40
投稿者: WinArrow
投稿者のウェブサイトに移動

追加レス
 

引用:

「ブックを開く」と「起動」は、異なる

 
一般論としての話です。
 
ブックを開くときにマクロを実行するようなコードを記述することはできますので、
これに該当する場合は、表面的に一緒になります。
 

回答
投稿日時: 22/04/06 22:51:50
投稿者: simple

途中からですみません。
話の前提が良く見えないのですが、
そもそも、なぜデザインモードにしようとしていますか?
そこを教えてもらえますか?

投稿日時: 22/04/07 08:53:41
投稿者: S.Kos

WinArrowさん、重ねてのRES恐縮です。
 
"A.xlsm"も"B.xlsm"も、ActiveXコントロールのボタンを持ち、いずれも単独で開いたなら、ボタンに紐づけたコードが走ります。
つまり、どちらにも、プログラム上の問題は無い、と考えています。
 
Aを開いて、画面上部に並ぶ、ファイル、ホーム、、開発、ヘルプ、の中から、
開発を選択してリボンを開き、デザインモード、を押します。
→ この時点でAのボタンは反応しません
  この状態を「AのVBAが止まっている」と表現しました。
  この状態を掴むにはVBEを開いて最上段の「A.xsm[デザイン]」を確認するしかありません。
 
次にBを開くと、こっちのボタンも反応しません。
→ この状態を「BのVBAも止まっている」と表現しました。
 
simpleさん、RES感謝です。
"A.xlsm"のコードを修正/改変するには、VBEを開いて該当箇所を目視で探さねばなりません。
けれどデザインモードにすれば、該当ボタン押し下げでVBEが開き、紐づけられたコードを見せてくれます。

回答
投稿日時: 22/04/07 09:16:22
投稿者: WinArrow
投稿者のウェブサイトに移動

S.Kos さんの引用:

Aを開いて、画面上部に並ぶ、ファイル、ホーム、、開発、ヘルプ、の中から、
開発を選択してリボンを開き、デザインモード、を押します。
→ この時点でAのボタンは反応しません
  この状態を「AのVBAが止まっている」と表現しました。
  この状態を掴むにはVBEを開いて最上段の「A.xsm[デザイン]」を確認するしかありません。

>この時点でAのボタンは反応しません
「デザインモード」というボタンは、
マクロを実行するためのボタンでも、画面をVBEに切替するためのボタンではありません。
前レスにも書いたとおり、「コントロール」を編集するためのボタンです。
編集対象のコントロールを選択してから、「デザインモード」を押下すると「編集用のダイアログ」が表示されます。
勿論、VBAが実行されていないから、「止まっている」という表現は正しいですが、
複数のブックを開いていれば、ともに同じです。
開いたときに自動起動するようなマクロを組み込んでいなければ、
ブックを開いたときには、デザインモードになっています。
従って、「止まっている」を強調する必要もないと思いますが、
何の目的で「止まっている」状態を確認しているのでしょう?
 
本当は、ActiveXコントロールのボタンに登録した「マクロ」を実行したいのではりませんか?
 
 
 

回答
投稿日時: 22/04/07 10:51:21
投稿者: Suzu

ファイル容量 の大小 による 状態の違い については 試せていません。
 
確認ですが、

引用:
次にBを開くと、こっちのボタンも反応しません。
→ この状態を「BのVBAも止まっている」と表現しました。

 
この時の状態を デザインモード と表現されていますが
 
 
この時に、VBE をアクティブにして、B のプロジェクトを選ぶと
 タイトルバー が「B.xsm[デザイン]」となっている事を確認し、デザインモード と表現されていますか?
 
Bのボタン が 反応しない 事について VBA が中断モード である可能性もあるのですが
VBE 画面 で、A の プロジェクト を選択した状態で、
 タイトルバー が [デザイン]表記である事を確認しているとすれば、
 [デザイン] と [中断] は 同時には ならないはずなので 中断モードでは無いのですよね。。
 
B が デザインモードでも、VBE 画面からなら VBA を実行する事が可能ですが
そちらは 確認されていますか?

回答
投稿日時: 22/04/07 12:29:00
投稿者: mattuwan44

ブック「A」のマクロはボタン押下で起動。
ブック「B」のマクロは、ファイルを開いたときに起動。
という構えなのでしょうか?
その時に、
ブック「A」で、デザインモードにしたまま、
ブック「B]を開いたとき、ファイルが開いたときに実行されるマクロは、
実行されるか?という質問でしょうか?
 
頭で考えただけでは、デザインモードかどうかは、マクロが実行されるかどうかには、
関係ないように思われます。
ましてや、ファイルサイズで挙動が変わるということはあり得ないかと。
ま、こういうのはご自分で試してみられるのが一番確かと思います。
同じ環境を整えることが、掲示板では困難なので実験が正確にできないかと。

回答
投稿日時: 22/04/07 13:03:01
投稿者: WinArrow
投稿者のウェブサイトに移動

「デザインモード」というボタン
についての、説明が若干間違っていました。
 
誤)

引用:

「デザインモード」というボタンは、
マクロを実行するためのボタンでも、画面をVBEに切替するためのボタンではありません。
前レスにも書いたとおり、「コントロール」を編集するためのボタンです。
編集対象のコントロールを選択してから、「デザインモード」を押下すると「編集用のダイアログ」が表示されます。

「デザインモード」というボタンは、
フォームコントロールやActiveXで、シートに作成した「コントロール」の
「編集を可能にする/編集でいないようにする」を切替ボタンです。
デザインモードをクリックしても、何も反応しない
は、間違いで、「デザインモード」の背景色が変わります。
背景色が付いている場合は、「デザインモード」となり
コントロールを選択し、右クリックすると、編集用のメニューが表示されます。
背景色がついていない場合は、実行モードとなり、「コントロール」をクリックすると、
「登録したマクロ」が実行されます。
 
コントロールのマクロを登録する操作
「デザインモード」の状態で、
「コントロール」が、フォームコントロールの「ボタン」の場合、
右クリックのメニューから「マクロの登録」を操作します。
「コントロール」が、ActiveXの「コマンドボタン」の場合、
右クリックのメニューから「コードの表示」を操作します。
 
 
 

回答
投稿日時: 22/04/07 15:31:28
投稿者: simple

デザインモードにする理由の回答拝見しました。
既に指摘がありますように、
「コードの表示」ボタンをクリックするのが普通かもしれません。
それがそのボタンの役目ですから。
もっとも、複数のプロシージャーがあってピンポイントで指定したい、ということですか。
直近のカーソル位置を保持しているので、「コードの表示」でもたいていは
用が足りるように思います。
取り急ぎ御礼まで。

投稿日時: 22/04/08 12:49:15
投稿者: S.Kos

多くのRES、ありがたく思いますが、いささか・・・
 
WinArrowさん
>本当は、ActiveXコントロールのボタンに登録した「マクロ」を実行したいのではりませんか?
>
ひとつ上に、
>"A.xlsm"も"B.xlsm"も、ActiveXコントロールのボタンを持ち、いずれも単独で開いたなら、
>ボタンに紐づけたコードが走ります。
>
と記しています。
 
いわゆる「記録したマクロ」ではなく、全てをスクラッチで書いた「コード」ですけどね。
 
なにやら、表現と解釈を巡るハナシ、になり始めたので、いったんここで閉じます。
改めて投稿しますので、ご教示いただけれは幸いです。