2016-10-28 11 views
0

こんにちは再びスタックオーバーフロー - エクセルVBAスタティック(不揮発性)変数 - ユーザーフォーム

はエクセル2010 VBAでユーザーフォームでの作業は、私は、テキストボックスはで設定されたデフォルト値を与えられるべきだ「reviewerName」と呼ばれていますユーザー。今のデフォルトは次のようになっています:

Private Sub userform_initialize() 
    reviewerName.text = "Your name here" 
End Sub 

フォームを開くと、すでに「あなたの名前はここにあります」というテキストボックスに記入されています。すばらしいです!しかし、他の誰かが名前を上書きすると、どのようにデフォルトに新しい名前を設定するのですか?フォームを閉じて開くと、reviewerName = "Bob"になりますか? reviewerName変数を静的に更新し、次にブックを開くときに使用できるようにするコマンドは何ですか?

ありがとうございます!

+0

reviewNameは変数ではありません。これはフォームフィールドです。おそらく、この正確なコードを 'userform_initialize()'の代わりに 'userform_activate()'イベントに入れたいだけでしょうか? – JNevill

+1

そのような変数を永続化するコマンドはありません。このようなフォームでは、通常、 'Application.UserName'や' Environ $( "USERNAME") 'のようなものを使用します。 – Comintern

+0

コマンドボタンで多分永続変数を作成して、新しいユーザー名をシート上のセル(1,1)に書き込んだ後、シート上のセル(1,1)の開いた外観に書き込むことはできますか? –

答えて

0

これを行う方法の1つは、テキストボックスに既にスプレッドシート上の値を参照させ、効果的に「静的」な変数を与えることです。フォームを送信するためのアクションがあるとき

Private Sub userform_initialize() 
    reviewerName.text = Cell(1,24) 'form will look for a value in column X Row 1. 
End Sub 

その後、のいずれかのコマンドは次のようになります。あなたがもう一度フォームを開くと

Private Sub submit_click() 
... 
Cells(1,24) = reviewerName.text 'writes a value in column X row 1. 
... 
End Sub 

それは、そのセルの値を描画します。

関連する問題