Excel VBA質問箱 IV

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

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


8082 / 13645 ツリー ←次へ | 前へ→

【35224】クラスモジュールと配列 mmmm 06/2/23(木) 22:38 質問[未読]
【35225】Re:クラスモジュールと配列 kobasan 06/2/24(金) 0:41 発言[未読]
【35242】Re:クラスモジュールと配列 mmmm 06/2/24(金) 9:43 お礼[未読]

【35224】クラスモジュールと配列
質問  mmmm  - 06/2/23(木) 22:38 -

引用なし
パスワード
   クラスモジュールで配列を引数とするプロパティを作り、標準モジュールから
そのプロパティに配列をセットしようとしたら、「配列には割り当てられません」
というコンパイルエラーが返ってきました。また、配列を引数とするメソッドを
作成し、標準モジュールからそのメソッドに配列をセットしようとしたら、
「型が一致しません:配列またはユーザ定義型を指定してください。」と、
配列を指定してるのにもかかわらず怒られました。

どなたか教えて下さい。クラスモジュールでは、配列を引数に出来ないのですか?
参考までにコードを載せます。よろしくお願い致します。

(クラスモジュールClass1 プロパティ版)
Private this_TestData() As String
'
' Let PTestData() 文字列の配列のSETTER
'     引数: 文字列の配列
'   処理概要: 文字列の配列をセットする。
'
Public Property Let PTestData(ByRef strTestData() As String)
  this_TestData = strTestData
End Property
(標準モジュール プロパティ版)
Sub Test_Array()
  Dim MyArray(3) As String
  Dim objTest As Class1

  objTest.PTestData = MyArray
End Sub

(クラスモジュールClass1 メソッド版)
Private this_TestData() As String
'
' ArrayTestData() 文字列の配列を設定
'     引数: 文字列の配列
'   処理概要: 文字列の配列をセットする。
'
Public Sub ArrayTestData(ByRef strTestData() As String)
  this_TestData = strTestData
End Sub
(標準モジュール メソッド版)
Sub Test_Array()

  Dim MyArray(3) As String
  Dim objTest As Class1

  objTest.ArrayTestData (MyArray)
End Sub

【35225】Re:クラスモジュールと配列
発言  kobasan  - 06/2/24(金) 0:41 -

引用なし
パスワード
   今晩は。

>どなたか教えて下さい。クラスモジュールでは、配列を引数に出来ないのですか?
>参考までにコードを載せます。よろしくお願い致します。

これで一応、配列を渡しています。参考にしてください。

'[クラスモジュール Class1]
Public Result As Variant '計算結果を格納するプロパティ
Private u As Variant

'dataAを設定するプロパティ
Public Property Let dataA(ByVal p As Variant)
  '計算.dataA =MyArray のとき、 P=MyArray の動作をする
  u = p
End Property

'計算処理するメソッド作成
Public Sub Calc()
  ReDim Result(1 To 2)
  Result(1) = u(0) + "+" + u(1)  '和
  Result(2) = u(0) + "*" + u(1)  '積
End Sub

'標準モジュール
Sub test()
Dim 計算 As New Class1  'インスタンスの生成
Dim MyArray As Variant
  MyArray = Array("a", "b")
  計算.dataA = MyArray

  計算.Calc    '計算を実行
  '
  '結果を表示
  MsgBox "和= " & 計算.Result(1) & vbCrLf & _
      "積= " & 計算.Result(2), , "aとbの計算結果"
End Sub

【35242】Re:クラスモジュールと配列
お礼  mmmm  - 06/2/24(金) 9:43 -

引用なし
パスワード
   おはようございます。kobasanさん、
早いレスありごとうございます。
VBAは初心者なので、大変参考になりました。
これで、自分が思っている仕事が続けられます。
ありがとうございました。

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