FORMモジュールの自動複製

解決


そら  2004-11-12 23:09:48  No: 117563

FORMモジュールを追加したい場合、手動でメニューのフォームモジュールの追加を
選択し、追加します。
プログラム上でFORMモジュールの複製を行いたいのですが、
そのようなことはできるのでしょうか?
ご教授願います。


raki  URL  2004-11-12 23:40:13  No: 117564

フォームもクラスですから、複製は可能です。
例えば、Form1とForm2があるとして、
Form1にはボタンが一つあるとします。

Form1のボタンクリックイベントに以下のように記述してください。

Dim f As Form2
Set f = New Form2
f.Show

これでForm1のボタンを押せば、押した数だけForm2が開きます。
が、これでは実用するには問題があるので、
Dim f As Form2
を関数外へ出すなり標準モジュール内で宣言するなり、
御自身で改良してください。


そら  2004-11-13 01:47:00  No: 117565

ありがとうございます。
早速やってみます。

ちなみにForm2を用意せずに
Form1のボタンをクリックした際にForm2が
表示されるということはできますでしょうか?


raki  URL  2004-11-13 02:28:34  No: 117566

> ちなみにForm2を用意せずに
用意せずというのは、デザインモード(デバッグ環境)で
Form2を定義(追加)しない状態で、
コードでForm2を1から作成して
Form2を表示する、ということですか?

それでしたら、無理なはずです。
つまり、
Dim f As Form2
というのは、Form2型のForm変数を使いますよ、という宣言なので、
プロジェクトにForm1しかない状態で
  Dim f As Form2
とは出来ませんし、
仮に
  Dim f As Form
としたとて、
  Set f As New Form
とは出来ないはずですから。
  Dim f As New Form
も同じく出来ません。

#VB.NETなら出来ますが


そら  2004-11-25 19:16:38  No: 117567

有難う御座いました。
VB.NETからはできるんですね。


Say  2004-11-25 21:45:31  No: 117568

VB6でもやろうと思えばできなくもないですが・・・。

[方法1]Form1のインスタンスを作って、Form2のフリをする。(難易度低)
[方法2]CreateWindowで全部自前で作る。(難易度中)


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加