|
ちょっと仕様を変更して
「Book1.xls上のUserform1上にあるコマンドボタンをクリックすると Book2.xlsのUserform1 が起動するようにする」という例題で考えます。
新規にBook1.Xls、Boo2.Xlsを作成します。
Book1.Xls及び、Book2.Xlsは同じフォルダ上に保存することとします。
Book1.Xlsには、ユーザーフォーム(Userform1)ひとつ作成してください。
Userform1の構成
テキストボックス(Textbox1)をひとつ配置
コマンドボタン(Commnadbutton1)をひとつ配置
↑このボタンのクリックでBook2.XlsのUserform1を表示します
Book1.XlsのThisWorkBookのモジュールに
'===================================================
Option Explicit
Public bk2 As Workbook
Sub main()
Set bk2 = Workbooks.Open(ThisWorkbook.Path & "\book2.xls")
UserForm1.Show vbModeless
End Sub
UserForm1のモジュールに
'===============================================================
Private Sub CommandButton1_Click()
ThisWorkbook.bk2.get_frm.Show vbModeless
End Sub
'*************************************************************************
Book2.Xlsには、ユーザーフォーム(Userform1)ひとつ作成してください。
Userform1の構成
テキストボックスをふたつ配置(Textbox1,Textbox2)
↑このテキストボックスに意味はありませんが、Book1.XlsのUserForm1と
区別するためにテキストボックスの数を変えました。
Book2.XlsのThisWorkBookのモジュールに
'====================================================================
Function get_frm() As Object
Set get_frm = UserForm1
End Function
これで準備完了です。
一度、Book1.Xls、Book2.Xls共に閉じた後、
Book1.Xlsのみを開いてください。
Book1.XlsのThisWorkbook.mainを実行してください。
Book2.Xlsを開いた後に
Book1.XlsのUserform1が表示されます。
Commandbutton1をクリックしてください
Book2.XlsのUserform1が表示されます。
(Book1.XlsのUseform1が隠れてしまいますが、
Book2.XlsのUserfrom1をずらしてふたつのユーザーフォームが表示されていることを
確認してみてください)
これがうまくいくようなら、実際の対象となるブックに応用してください
|
|