アプリ版:「スタンプのみでお礼する」機能のリリースについて

度重なる質問で恐縮ですが宜しく御願い致します。
エクセルからフォームを呼び出し、入力してOKボタン(Commandbutton1)を押すとsheet2にデータを書き込むようにしました。さらに再度フォームを開いた時に、前回OKを押してsheet2に書き込んだデータがフォーム上に入力済みになっているようにしました。再度フォームを開いた時に前回のデータが入力済みで開く事は開くのですが、逆にsheet2のデータを全削除したあとに開いても、記述が残った状態でフォームに表示されてます。つまり、sheet2のセルをformが開く時に読み込んでないと言うことです。メモリか何かでしょうか?以下に書き込む時のコードと、開く時のコードを記載させていただきます。
ご教授いただければと思います。解りにくければ補足させていただきます。宜しくお願いします。

'Formの記入をSheet2に反映する
Private Sub CommandButton1_Click()
Dim i As Integer
With Worksheets("data")
'「申込書」の値を書き出し
For i = 1 To 21
.Range("A" & i) = UserForm1.Controls("t" & i).Value
Next(・・・続く)

'Formを呼び出したとき、Sheet2から読み込む
Private Sub UserForm1_Initialize()
Dim i As Integer
With Worksheets("data")
'「申込書」の値を読み込み
For i = 1 To 21
UserForm1.Controls("t" & i).Value = .Range("A" & i)
Next(・・・続く)

A 回答 (2件)

UserForm1を開く時は、単に



UserForm1.Show

と記述されているのでしょうか?もしそうならば、開くときは、

Load UserForm1
UserForm1.Show

とし、閉じる時は

Userform1.Hide
Unload Userform1

とすれば、UserForm1をメモリにロード→開く→(処理)→閉じる→メモリからUserForm1をアンロードと言う流れになるので、メモリ上に残っているのが原因だとしたら、これで解消できるハズです。

それでもだめなら、
Private Sub UserForm1_Initialize()
Dim i As Integer
'オブジェクトの初期化
For i = 1 To 21
UserForm1.Controls("t" & i).Value = ""
Next
'「申込書」の値を読み込み
For i = 1 To 21
UserForm1.Controls("t" & i).Value = .Range("A" & i)
Next(・・・続く)

で大丈夫だと思います。
    • good
    • 0
この回答へのお礼

ありがとうございました!
凄くたすかりました!

お礼日時:2003/03/20 21:36

With Worksheets("data")


って
With Worksheets("Sheet2")
のことかな?

この回答への補足

そうです!
言葉足らずですみません。宜しくお願いします。

補足日時:2003/03/07 12:42
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!