[[20131030161053]] 『VBAでユーザーフォームのLabelの書き換え』(からす) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAでユーザーフォームのLabelの書き換え』(からす)

 ユーザーフォームを作り、その中にラベルがあります。
 名前は、Label1 です。

 Sub test1()
    UserForm1.Label1.Caption = "練習"
 End Sub

 Sub test2()
    UserForm1.Show    
 End Sub
 
 標準モジュールに上記のコードを記録して実行すると、
 ユーザーフォームのラベルには「練習」と表示されますが、
 このユーザーフォームを閉じると「練習」は消えてしまいます。

 どうしたらこの文字をそのままに保存しておくことができますか?
 Win7 Excel2010

 Initializeイベントを使います。
Private Sub UserForm_Initialize()
    Me.Controls("Label1").Caption = "練習"
End Sub
 これはフォームが読み込まれたときに実行されます。
 勘違いかな?
(稲葉) 2013/10/30(水) 16:26

 稲葉さん、ありがとうございます。
 実際には"練習" は固定ではありません。
 プログラムの流れによって変わりますので、
 標準モジュールの中で変えたいのですが無理でしょうか。
(からす) 2013/10/30(水) 16:28

 よくわかんないんだけど、流れの中でフォームが出たり消えたりするわけですか?
 標準モジュールの先頭に
Public TEST As String
 を置いて、各標準モジュールで
Sub NAZENAKUNO()
    TEST = "学校" '//変数を書き換える
    UserForm1.Show
End Sub

 ユーザーフォームの値に
Private Sub UserForm_Initialize()
    Me.Controls("Label1").Caption = TEST '//Public変数ならモジュール外でも使える
End Sub

 こんな感じ?
(稲葉) 2013/10/30(水) 16:37

 実際にやりたいことは、マクロを使ってデータの更新をしています。
 最後に更新した日時をユーザーフォームのラベルに記録しておきたいのです。

 ユーザーフォームを開いたときに、最後に更新した日時をユーザーフォーム上に
 表示したいのです。

 現在はその日時をシート上に記録しておき、ユーザーフォームを立ち上げたときに
 Initializeで読み込むようにしていますが、
 このワンステップを省略して、
 直接ラベルを書き換えることができるかどうか知りたかったのです。

(からす) 2013/10/30(水) 16:49


 ユーザーフォームに記録しておくことは出来ません。
 セルのどこからに保存しておかないとだめですね。
(稲葉) 2013/10/30(水) 17:20

 そうですか、ありがとうございました。

(からす) 2013/10/30(水) 17:28


 >直接ラベルを書き換えることができるかどうか知りたかったのです。
 これ、VbProjectを操作すれば、可能です。

 が、拝見した事象では、その方法ではなく、セルに保存しておいて、ユーザーフォームの表示する
 タイミングでラベルに設定したり、もっと本格的にするなら、対象のブックとは、別のファイル
 (iniファイル等)に保存し、ユーザーフォームを表示するタイミングで読み込んでラベルに設定する方が
 よいと思いますよ!!

(ichinose) 2013/11/01(金) 06:51


 ichinoseさん、どうもありがとうございます。

 私のスキルでは、VbProjectを操作する方法は難しそうです。
 このファイルは後々他人が管理することとなりそうですので、
 そのことを考えるとあまり難しい処理はさせない方が無難なようです。

 やはり今までどおり、セルに保存しておくこととします。

 ご親切にお教え頂きましてありがとうございました。

(からす) 2013/11/01(金) 08:50


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.