• ベストアンサー

ユーザーフォームで入力するときに、値を残して訂正分だけ訂正して入力したいのですが、できません。

マクロの初心者です。 参考書を見ながらマクロを書きましたが、ユーザーフォームからセルに書き込み後、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 -------------------------------- 入力、書き込みはできましたがユーザーフォームにデータを残すことができません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

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 '----------------------------------------------- 以上です。

daibaas
質問者

お礼

myRange様 早速の回答ありがとうございました。 思い通りに動きました。 ずいぶん余分なものがあったようです。 じっくりと勉強させていただきます。 感謝、感謝です。 ありがとうございました。

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>Unload Form鳥獣入力 ↓ Form鳥獣入力.Hide Unloadの代わりにHide メソッドを使ってみては 非表示にするだけでアンロードしませんのでユーザーフォーム上の データは次回Showしたときも残ります。

daibaas
質問者

お礼

watabe007様 ありがとうございます。 連絡が遅くなりました。 簡単なことで同じ結果が得られました。 大変勉強になります。 ありがとうございました。

関連するQ&A