- ベストアンサー
ユーザーフォームで入力するときに、値を残して訂正分だけ訂正して入力したいのですが、できません。
マクロの初心者です。 参考書を見ながらマクロを書きましたが、ユーザーフォームからセルに書き込み後、Cmmandと、Txtに入力データを残しておいて、次は訂正部分だけを訂正して書き込みをしたいのですが、コードがわかりません。 まだマクロをほとんど理解していませんので、よろしくお願いします。 Option Explicit Public MyDlg As Boolean Sub 鳥獣入力() 'データ入力ダイアログを呼び出す MyDlg = True 'MyDlgにtrueを代入する '入力開始位置の取得 Sheets("様式1").Select Range("B9909").End(xlUp).Activate ActiveCell.Offset(1, 0).Activate 'MyDlgにFalseが代入されるまで繰り返しダイアログを表示する Do Until MyDlg = False Form鳥獣入力.Show Loop End Sub -------------------------------- Private Sub Cmd終了_Click() '「終了」ボタンクリック時の処理 'MyDlgにFalseを代入し、ダイアログを閉じる MyDlg = False Unload Form鳥獣入力 End Sub -------------------------------- Private Sub Cmd入力_Click() '入力クリック時の処理 'ダイアログのデータをワークシートに入力する ActiveCell.Value = Cmb登録種別.Value ActiveCell.Offset(0, 1).Activate ActiveCell.Value = Txt登録証.Value ActiveCell.Offset(0, 1).Activate ActiveCell.Value = Cmb年月日.Value ActiveCell.Offset(0, 1).Activate ActiveCell.Value = Cmb鳥獣名.Value ActiveCell.Offset(0, 1).Activate ActiveCell.Value = Cmb雌雄の別.Value ActiveCell.Offset(0, 1).Activate ActiveCell.Value = Txt捕獲数.Value ActiveCell.Offset(0, 1).Activate ActiveCell.Value = Cmbメッシュ番号.Value ActiveCell.Offset(0, 1).Activate ActiveCell.Value = Cmb市町村名.Value ActiveCell.Offset(0, 1).Activate ActiveCell.Offset(1, -8).Activate Unload Form鳥獣入力 End Sub -------------------------------- 入力、書き込みはできましたがユーザーフォームにデータを残すことができません。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Unload した後、Showするとコントロールの値は初期化されますので Show,Unloadとも一回だけにしておかなければいけません。 また、Activecell.offset(0,1).SelectなどのSelectは不要です。 '========= 標準モジュール ========= Option Explicit Sub 鳥獣入力() Sheets("様式1").Select Form鳥獣入力.Show End Sub '======== 以下UserFormモジュール =========== Private Sub Cmd終了_Click() Unload Form鳥獣入力 End Sub '-------------------------------- Private Sub Cmd入力_Click() With Range("B9909").End(xlUp).Offset(1, 0) .Value = Cmb登録種別.Value .Offset(0, 1).Value = Txt登録証.Value .Offset(0, 2).Value = Cmb年月日.Value .Offset(0, 3).Value = Cmb鳥獣名.Value .Offset(0, 4).Value = Cmb雌雄の別.Value .Offset(0, 5).Value = Txt捕獲数.Value .Offset(0, 6).Value = Cmbメッシュ番号.Value .Offset(0, 7).Value = Cmb市町村名.Value End With End Sub '----------------------------------------------- 以上です。
その他の回答 (1)
- watabe007
- ベストアンサー率62% (476/760)
>Unload Form鳥獣入力 ↓ Form鳥獣入力.Hide Unloadの代わりにHide メソッドを使ってみては 非表示にするだけでアンロードしませんのでユーザーフォーム上の データは次回Showしたときも残ります。
お礼
watabe007様 ありがとうございます。 連絡が遅くなりました。 簡単なことで同じ結果が得られました。 大変勉強になります。 ありがとうございました。
お礼
myRange様 早速の回答ありがとうございました。 思い通りに動きました。 ずいぶん余分なものがあったようです。 じっくりと勉強させていただきます。 感謝、感謝です。 ありがとうございました。