06 EXCEL・VBAフォームとのデータ交換

フォームとのデータ交換には、殆どの場合、次のどちらかの方法が用いられます。
 ・フォーム側から該当シートに直接アクセス(読み書き)する
 ・やり取りするデータの全てを、グローバル変数に格納する
いずれも、汎用性あるいは信頼性に欠け、余り好ましい方法とは考えられません。

では、どーするか・・?

UserForm1のコードに以下を記します。
 Private testData As Long
 Property Let Info(arg As Long) ‘データ受領
  testData = arg
 End Property
 Property Get Info() As Long ‘データ返却
  Info = testData
 End Property

シートには以下を記します
 Dim testDataOnSh as long
 testDataOnSh = 1
 UserForm1.Info = testDataOnSh
 UserForm1.Show
 testDataOnSh = UserForm1.Info

これで、
 ・フォームを開く前のtestDataOnSh = 1がフォームに渡され、
 ・フォームの中で適当に加工され変わった値が、
 ・フォームを閉じたとき、シートの変数testDataOnShに戻されます。

例示では「整数型データ」を遣り取りしていますが、ここに「ユーザー定義型データ」を用いることも可能です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です