Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8278 / 13646 ツリー ←次へ | 前へ→

【34217】ユーザフォームの動的作成 YOSHI 06/1/28(土) 23:07 質問[未読]
【34218】Re:ユーザフォームの動的作成 かみちゃん 06/1/28(土) 23:27 発言[未読]
【34222】Re:ユーザフォームの動的作成 YOSHI 06/1/29(日) 0:16 質問[未読]
【34226】Re:ユーザフォームの動的作成 inoue 06/1/29(日) 1:05 発言[未読]
【34227】Re:ユーザフォームの動的作成 YOSHI 06/1/29(日) 1:28 お礼[未読]
【34228】Re:ユーザフォームの動的作成 inoue 06/1/29(日) 1:43 発言[未読]
【34229】Re:ユーザフォームの動的作成 YOSHI 06/1/29(日) 2:08 お礼[未読]
【34243】Re:ユーザフォームの動的作成 inoue 06/1/29(日) 18:09 発言[未読]

【34217】ユーザフォームの動的作成
質問  YOSHI  - 06/1/28(土) 23:07 -

引用なし
パスワード
   始めまして、YOSHIです。

VBAで、ユーザフォームを動的に作成する事は可能でしょうか。
方法が有りましたら教えていただけ無いでしょうか。
お願いします。

【34218】Re:ユーザフォームの動的作成
発言  かみちゃん  - 06/1/28(土) 23:27 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>VBAで、ユーザフォームを動的に作成する事は可能でしょうか。

UserFormを一個だけ用意しておいて、各コントロールの配置を動的にしたいということでしょうか?
それとも、UserFormそのものも動的に生成したいということでしょうか?

【34222】Re:ユーザフォームの動的作成
質問  YOSHI  - 06/1/29(日) 0:16 -

引用なし
パスワード
   かみちゃん さん回答有難うございます。

ユーザフォーム自体を動的に作成したいです。

【34226】Re:ユーザフォームの動的作成
発言  inoue E-MAILWEB  - 06/1/29(日) 1:05 -

引用なし
パスワード
   >ユーザフォーム自体を動的に作成したいです。
ユーザフォーム自身がクラスモジュールなので、
やるとしたら動的にコードを生成することになるのでは?

コンパイル済みで動作している最中のプロジェクト内に
クラスモジュールを追加してコードを生成することは
記述上で考えられても実行できないでしょう。
やればExcelごとハングアップすると思います。

【34227】Re:ユーザフォームの動的作成
お礼  YOSHI  - 06/1/29(日) 1:28 -

引用なし
パスワード
   ▼inoue さん:
>>ユーザフォーム自体を動的に作成したいです。
>ユーザフォーム自身がクラスモジュールなので、
>やるとしたら動的にコードを生成することになるのでは?
>
>コンパイル済みで動作している最中のプロジェクト内に
>クラスモジュールを追加してコードを生成することは
>記述上で考えられても実行できないでしょう。
>やればExcelごとハングアップすると思います。

回答有難うございます。
ユーザフォームのクラスモジュールを探してみたのですが
Forms.Form.1がありました。下記コードを実行してみたのですが
Dim frm As MSForms.UserForm
Set frm = VBA.CreateObject("Forms.Form.1")
frm.Visible=True
として表示したかったのですがVisibleプロパティが無く断念しました。
やはりVBAでは無理ですね。

【34228】Re:ユーザフォームの動的作成
発言  inoue E-MAILWEB  - 06/1/29(日) 1:43 -

引用なし
パスワード
   >ユーザフォームのクラスモジュールを探してみたのですが
違いますよ。
存在していないユーザフォームのクラスモジュールを
新規に作成するというのが貴方の要望です。

例えばすでに作成してあるユーザーフォームを
VBEでエクスポートさせてみて下さい。
そこで作成されるような*.frm,*.frxの内容を
VBEを操作して生成するようなことだと思うのです。

バグや機能向上の目的で作成済みのモジュールを
マクロで書き換えるという要望を良く聞きますが、
このことでも動作中のプロジェクトに対する書き換えは
事実上不可能です。
Excelごと死んでしまうので。

【34229】Re:ユーザフォームの動的作成
お礼  YOSHI  - 06/1/29(日) 2:08 -

引用なし
パスワード
   ▼inoue さん:
>存在していないユーザフォームのクラスモジュールを
>新規に作成するというのが貴方の要望です。
済みません、私の記述が曖昧でした。失礼しました。

私がしたい事は、VBEにユーザーフォームが無い状態で、マクロ関数のみで
フォームを作成して表示する事です。
ですので、マクロ内でCreateObject("Forms.Form.1")等のコードを利用して
でも、ユーザーフォームを作成して表示できたらありがたいのですが。
(このやり方が、inoueさんが指摘している事と同じでしたら
申し訳ないです。)

【34243】Re:ユーザフォームの動的作成
発言  inoue E-MAILWEB  - 06/1/29(日) 18:09 -

引用なし
パスワード
   >私がしたい事は、VBEにユーザーフォームが無い状態で、
>マクロ関数のみでフォームを作成して表示する事です。
どうしてプロジェクトに事前にフォームを置いておけないのかが
良く分かりません。
フォーム上のコントロールの数を変えるとか追加するのはよく聞きますが。

フォームを用意しておいて「使わない」というなら
何でもないことですが、それではいけないのでしょうか。

それが既に作成済みのブックへの対応だとしても、
その「動的にフォームを生成するコード」を実装させなければならないので、
事前にフォームを作り込んでおけないということにはならないと思います。

また、別解として、そのようなユーザーフォームだけを実装したブックを
別に用意して外部から呼び出せるようなプロシージャを作って
必要なブックから呼び出すという方法もあると思います。
アドインにしておけばウィンドウには影響しないので、
パスを指定して通常ブックのように開く方法で
本来のアドインとして組み込まずに利用することも可能ですが。

8278 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free