Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4150 / 13646 ツリー ←次へ | 前へ→

【58172】Tagプロパティの使い方 ようたん 08/10/7(火) 11:49 質問[未読]
【58186】Re:Tagプロパティの使い方 ichinose 08/10/8(水) 12:39 発言[未読]
【58194】Re:Tagプロパティの使い方 ようたん 08/10/9(木) 0:49 お礼[未読]
【58188】Re:Tagプロパティの使い方 neptune 08/10/8(水) 13:57 発言[未読]
【58195】Re:Tagプロパティの使い方 ようたん 08/10/9(木) 0:51 お礼[未読]

【58172】Tagプロパティの使い方
質問  ようたん  - 08/10/7(火) 11:49 -

引用なし
パスワード
   最近、勉強をしていてTagプロパティやPrppertyプロシージャに
ついて知りました。
そこで疑問があるのですが、どなたかアドバイスお願いいたします。

実行するのは、フォームMainFormのボタンを押すとフォームSubForm
が表示され、SubFormのTextBoxに数値を入力し同フォームのボタン
を押すとそのフォームが閉じてMainFormのTextBoxにSubFormから値が
渡されて表示されるという動作です。

以下TagプロパティとPropertyプロシージャを使った2例のうちで
ベストなのはどちらなのでしょうか?
それともどちらでも問題がないものなのでしょうか?
よろしくお願いいたします。

1、Tag の例

 MainForm ///////////////////////////////

 Private Sub CommandButton1_Click( )

   Dim myChk As String
  
   With SubForm
     .Show
     myChk = .Tag
   End With
  
   Unload SubForm
  
   If IsNumeric(myChk) Then
     TextBox1.Text = myChk
   End If

 End Sub

 SubForm ///////////////////////////////

 Private Sub CommandButton1_Click( )

   With Me
     .Tag = TextBox1.Text
    . Hide
   End With

 End Sub


1、Property の例

 MainForm ///////////////////////////////

 Dim myChk As String


 Public Property Let atai(ByVal newdata As String)

   myChk = newdata

 End Property

 Private Sub CommandButton1_Click()
  
   SubForm.Show
  
   If IsNumeric(myChk) Then
     TextBox1.Text = myChk
   End If

 End Sub

 SubForm ///////////////////////////////

 Private Sub CommandButton1_Click()

   MainForm.atai = TextBox1.Text
  
   Unload Me
  
 End Sub

【58186】Re:Tagプロパティの使い方
発言  ichinose  - 08/10/8(水) 12:39 -

引用なし
パスワード
   ▼ようたん さん:
こんにちは。

>実行するのは、フォームMainFormのボタンを押すとフォームSubForm
>が表示され、SubFormのTextBoxに数値を入力し同フォームのボタン
>を押すとそのフォームが閉じてMainFormのTextBoxにSubFormから値が
>渡されて表示されるという動作です。

>以下TagプロパティとPropertyプロシージャを使った2例のうちで
>それともどちらでも問題がないものなのでしょうか?

作動しているという事なら、どちらも問題がないですが、
厳密にみると・・・、

私なら、Tagプロパティを使ったコードですかねえ・・・。

これは、Tagプロパティを使っているから良いとか、
Propertyプロシージャを使うことがNG 等と言うことではありません。

本当は、

SubForm.show myChk

とShowメソッドでパラメータ渡しが出来たら ベストですよね?

これが出来ないから、ここの手続きを出来る限り明確に且つ、汎用的に
定義するべきだ という立場として意見ですが、

2のPropertyプロシージャを使った例では、

Private Sub CommandButton1_Click()

   MainForm.atai = TextBox1.Text
  
   Unload Me
  
 End Sub

とSubformの出力データの以降先がMainForm.atai と固定された手続きになってしまい、
汎用性が1に比べると劣るように思えました。

上記の理由ですから、Propertyプロシージャを使う、使わないの問題ではないです。


尚、1に関しても

Private Sub CommandButton1_Click( )

   Dim myChk As String
  
   With SubForm
     .Show
     myChk = .Textbox1.Text
   End With
  
   Unload SubForm
  
   If IsNumeric(myChk) Then
     TextBox1.Text = myChk
   End If

 End Sub

では、問題があるのでしょうかねえ!!
Tagというプロパティで中身が想像しやすいなら、これでも良いですけどね!!


以上、気が付いた点です、というより、ざっとみた感想です。


>
>1、Tag の例
>
> MainForm ///////////////////////////////
>
> Private Sub CommandButton1_Click( )
>
>   Dim myChk As String
>  
>   With SubForm
>     .Show
>     myChk = .Tag
>   End With
>  
>   Unload SubForm
>  
>   If IsNumeric(myChk) Then
>     TextBox1.Text = myChk
>   End If
>
> End Sub
>
> SubForm ///////////////////////////////
>
> Private Sub CommandButton1_Click( )
>
>   With Me
>     .Tag = TextBox1.Text
>    . Hide
>   End With
>
> End Sub
>
>
>1、Property の例
>
> MainForm ///////////////////////////////
>
> Dim myChk As String
>
>
> Public Property Let atai(ByVal newdata As String)
>
>   myChk = newdata
>
> End Property
>
> Private Sub CommandButton1_Click()
>  
>   SubForm.Show
>  
>   If IsNumeric(myChk) Then
>     TextBox1.Text = myChk
>   End If
>
> End Sub
>
> SubForm ///////////////////////////////
>
> Private Sub CommandButton1_Click()
>
>   MainForm.atai = TextBox1.Text
>  
>   Unload Me
>  
> End Sub

【58188】Re:Tagプロパティの使い方
発言  neptune  - 08/10/8(水) 13:57 -

引用なし
パスワード
   ▼ようたん さん:
こんにちは

私も感想になりますが、
>以下TagプロパティとPropertyプロシージャを使った2例のうちで
>ベストなのはどちらなのでしょうか?
>それともどちらでも問題がないものなのでしょうか?
どちらでも自分の期待する動作をすればそれでよいと思います。

但し、半年もたてば忘れますから、半年後の自分にとって見通しの良い手法を
とれば良いと思います。

多くののデータを扱うときは、Classを作成し、Propertyプロシージャで
属性とするとか、データ取得用のClassを作る(データ取得をカプセル化する)
とかの方法もわかり易いような気がします。
・・・・少し面倒ではありますけどね。

【58194】Re:Tagプロパティの使い方
お礼  ようたん  - 08/10/9(木) 0:49 -

引用なし
パスワード
   ▼ichinose さん:

ご意見ありがとうございました。
固定された手続きになってしまい、汎用性が1に比べると劣るように
思えるという意見は、今後の勉強の課題とさせていただきます。

【58195】Re:Tagプロパティの使い方
お礼  ようたん  - 08/10/9(木) 0:51 -

引用なし
パスワード
   ▼neptune さん:

ご意見ありがとうございました。
データ取得用のClassを作る(データ取得をカプセル化する)
という課題はまだピンときませんが、勉強してみます。

4150 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free