|
▼123 さん:
こんばんは。
>
>Book1が表示されている時は
>TextBox1の値が表示されているのですが、
>それを保存して、再度Book1を開いてみると
>また、元のTextに戻っています。
book1.xlsのUserform1のTextbox1のTextプロパティを書き換えて保存しても
再度Book1.xlsを開けば、書き換えた内容は表示されませんよ。
>プロパティ内のTextを直接書き換えなければいけないのでしょうか?
↑そういうことです。
お奨めはしませんが、情報として、
例えば、Book2.xlsのユーザーフォーム(Userform1)には、
テキストボックス(Textbox1)と変更ボタン(Commandbutton1)と
決定ボタン(CommandButton2)を用意してみましょう。
フォームモジュールに
'===========================================================
Dim frm
'=================================================
Private Sub CommandButton1_Click()
'Book1.xlsのTextbox1を変更する
Dim genzai As String
genzai = TextBox1.Text
Set frm = Application.Run("book1.xls!get_frm")
frm.TextBox1.Text = genzai
End Sub
'==================================================
Private Sub CommandButton2_Click()
'変更を確定する
Dim genzai As String
genzai = frm.TextBox1.Text
Unload frm
Set frm = Nothing
Call set_vbp_textbox(Workbooks("book1.xls"), "UserForm1", "TextBox1", genzai)
End Sub
'=======================================================================
Sub set_vbp_textbox(wk As Workbook, formname As String, tbx_nm As String, set_data)
'ユーザーフォームのテキストボックスを書き換える
Dim vbc
With wk.VBProject
Set vbc = .VBComponents(formname)
vbc.Designer.Controls(tbx_nm).Text = set_data
End With
End Sub
Book1.xlsの保存するコードは省略しますが、これでbook1.xlsのテキストボックスの内容が変更されると思います。
ただ、これは、Book1.Xlsのプログラムを書き変えることになってしまいます。
(私は、このようなコードは、作成したプログラムの編集用にしか使用していません)
たぶん、私が123 さんだったら、上記のようなコードにはしないと思います。
変更したbook1.xlsのTextbox1の内容をbook1.xlsの所定のセルに入れてから保存する。
ユーザーフォームを表示するときにその所定のセルから逆にTexbox1へ設定する。
という方法がよいと思いますがいかがでしょうか?
|
|