• ベストアンサー

Property Get での配列の引渡し

初歩的な質問なんですが、よろしくお願いいたします。 Property Getで配列を渡したいのですが どのように行えばよろしいのでしょうか? ParamArrayで行えば良いのかと思いましたがエラーが出てしまい ます。 Access2000のHELPではProperty GetでもParamArrayが使用できるよう に書いてあるんですが・・・・ 今の開発環境はAccess2003になります。 よろしくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 以下は、あくまでも、Access とは関係なく、単に、VBAでのProperty Get の使い方の一例です。 '標準モジュール Sub Test1()   Dim myClass As Class1   Dim i As Integer   Set myClass = New Class1   myClass.Value = Array(111, 112, 113)   If IsArray(myClass.Value) Then     For i = LBound(myClass.Value) To UBound(myClass.Value)       MsgBox myClass.Value(i)     Next i   End If End Sub 'クラスモジュール Private myValue As Variant Public Property Let Value(myNewValue As Variant)   myValue = myNewValue End Property Public Property Get Value() As Variant    Value = myValue End Property

papope
質問者

補足

ご回答ありがとうございます。 理解できました。 ありがとうございます。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 全体的なコードが見えてこないので、あまりはっきりしたことが言えません。 >やりたいことは >Public Property Get AAAA() as variant >の場合に戻り値(as Variantのところ)を配列にできないのかな? 代入値で決まってくるように思いますが。 × Public Property Get AAAA() As Variant() のような、あえて、エラーを引き起こすような書き方は出来ないと思います。Property Get 側に引数がないということは、Property Let 側で、代入することでしょうか?

papope
質問者

補足

ご回答ありがとうございます。 コードで悩んでいるので、コードの具体例が無いんです・・・すみません。 Private TBL() as Variant Public Property Get AAAA() as ....? AAAA = TBL() . . ていうような感じで渡せないものかな?と思ったものですから。 テーブルの配列数は不定・・・ 非常にわかりずらいかもしれませんが・・・

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 何をされたいのか、どんなエラーが出ているのか、こちらでは分かりかねますが、単に、VBAとして言うなら、 >ParamArrayで行えば良いのかと思いましたがエラーが出てしまいます。 初歩的なことだと思いますが、Property Get でも、引数としてパラメータ配列を使用する場合は、引数の後に、パラメータ配列を入れます。 それから、Property Get に渡す場合に、そのままでは、配列にはなっていないと思います。 私の知っている範囲で答えるなら、配列にする場合、Property Get の中で、配列に組み替えないと出来ないはずです。

papope
質問者

補足

ご回答ありがとうございます。 また返答が遅れまして申し訳ありません。 ごめんなさい。 HELPの読み間違いでした。 やりたいことは Public Property Get AAAA() as variant の場合に戻り値(as Variantのところ)を配列にできないのかな? と思った次第です。

関連するQ&A

  • 配列プロパティをREDIMする方法はないのでしょうか?

     タイトルの通りなんですが、 配列として持っているプロパティがあります。 そのプロパティをREDIMしたいのですが、 これは可能なのでしょうか? VB6.0の話になります。  『クラスモジュールに表記しています』 '詳細クラス Public Property Get PK_SYOUSAI() As clsSyousai PK_SYOUSAI = K_SYOUSAI() End Property Public Property Let PK_SYOUSAI(ByVal strValue As clsSyousai) K_SYOUSAI = strValue End Property  『標準モジュールに表記しています』 ReDim Preserve clsKouSei_K(0).PK_SYOUSAI(i) clsKouSei_K(0).PK_SYOUSAI(i) = cls_S  上記のREDIMの部分でエラーが起こり、処理が進みません。 どうすればよいのでしょうか?

  • ACCESSのBookmarkプロパティの使い方

    Stressmanと言います。 環境は、Windows98SEでACCESS2002を使っています。 質問というのは、ACCESSのBookmarkプロパティの意味、使い方 を教えていただきたいのです。 ヘルプを読んだのですが、よく分かりません… ちなみに、ヘルプには 「フォームの基になるテーブル、クエリ、またはSQLステートメント に含まれる測定のレコードを個別に識別するためのブックマークを設定 します。値の取得および設定が可能です。バリアント型の値を使用します。」 と書いてあります。 具体的に、「こういう意味」「こういう使い方をする」というのを 教えて頂きたいのです。 #サブフォームのレコード移動について調べていたら、「Bookmark」が #よくでてきたので、「これを理解しないと先に進めない」と判断して #投稿させていただきました。 #これぐらい知っておけよ、とつっこまないでください…

  • ASPでサーバーサイドの配列をクライアントサイドへ引渡し

    表記の件の実装方法が分からず、非常に困っています。 どなたかご教授願います。 ■開発環境   ASP(VBScript) ■内容   サーバーサイドでDBから取得した内容を   配列に保持しているのですが、その内容をクライアントサイド処理で   取得したいのですが、どのようにすればいいのか分かりません。   サーバーサイドの配列名 arrSvr() とした場合、   "<%=arrSvr(1)%>"などとすれば取得は出来るのですが、   配列のインデックスを動的に変更して取得したいのですがうまく行きません。   "<%=arrSvr(" & i & ")%>"などとしてもエラーとなってしましますし、   クライアントサイドの配列に一度配列ごと突っ込もうとして   arrClt = "<%=arrSvr%>" のようにしてもダメでした。   どなたか詳しい方、どうぞよろしくお願いします。

  • プロパティ作成

    お世話になっております 開発環境:VB2010(Windowsフォーム)、Windows7 動作環境:WindowsXP、Windows7 です プロパティを作っており、フォームのデザイナ時のプロパティで、「マスタメンテ用の画面」か「入力用の画面」かを選べるようにしたいと思っています プロパティを作成したのはいいのですが、選ぶときに「Masta」か「Nyuryoku」の選択肢を選ぶ形(右側に▼が出て選べる)にしたいのですが、方法がわかりません 直接入力で「Masta」と入力したりはできるのですが選択ではありません また、プロパティには「Masta」「Nyuryoku」と表示されますが内部的には"0"、"1"の値で持たせたいです (If (value = "Masta") Then~~でやろうとしたら値にしたほうがいいと言われました) Enum でと思ったのですが、Enumを使うと、「0」と入れると値が「Masta」に代わり、「1」を入れるとNyuryokuという文字に代わっただけで選択肢にはなりませんでした 初歩的な質問かもしれませんがよろしくお願いします

  • プロパティを通さなければアクセスできない変数を設定したい(VB2005)

    下記はメンバ変数とプロパティのコードです。 -------------------------------------- 'メンバ変数 Private _hoge As Integer = 1 'プロパティ Private ReadOnly Property phoge()   Get     Return _hoge   End Get End Property -------------------------------------- 上記の構造だと、同じクラス内であれば、下記のようにメンバ変数へプロパティを通さずアクセスが可能です。 Private Sub aaa()   MessageBox.Show(_hoge)   ' 1 と表示される(ここでエラーを出したい) End Sub 質問内容は、変数_hogeに対してアクセスするには、(同じクラス内からのアクセスであっても)プロパティを通さなければならない形にしたい、というものです。 つまり、下記のような形でないとエラーが発生するようにしたいと考えています。 Private Sub aaa()   Dim foo As Integer = phoge()   MessageBox.Show(foo) End Sub どうぞよろしくお願い致します。

  • 配列のキーに配列を使う場合

    初歩的な事なのかもしれないのですが、 $abc = $a["$b["c"]"]; のように配列のキーに配列を使いたいのですが、上記だとエラーが出ます。 どのように記述すればよいでしょうか?

    • ベストアンサー
    • PHP
  • C2065: 'EnumDisplayDevices' : 定義されていない識別子です。

    初歩的な質問で申し訳ないのですが、 EnumDisplayDevicesを使用したいのですが、タイトルのエラーになってしまいます。 一応、ヘルプを見て、winuser.hは、インクルードしています。 #include <winuser.h> 何がいけないのでしょうか? 開発環境は、VC6.0SP6です。

  • アクセス フォームのプロパティに「エラー時」がない!!

    アクセス2002 osはxpです。フォーム作り、入力時にエラーが発生したら再入力をさせようとエラー時のイベントを設定しようとしたら  エラー時のプロパティがない。どうやって制御しましょう。マニュアル本や ヘルプにはちゃんとあるのに どうしてでしょうか。教えてください。

  • プロパティを隠したい

    windows-xp、アクセス2003(←最近97からバージョンアップした)を使っています。 質問です! あるひとつのフォームを開くとプロパティも一緒に出てきてしまいます。 今までこんなこと、なかったのですが・・・。 2003には、このような設定があるのでしょうか? プロパティは出したくないです。 解決方法を教えてください! 宜しくお願い致します。

  • クラスに配列を渡す方法

    こんにちは、VB.NET初心者です。 メインプログラムからクラスに配列を渡したいのですが、どうやって渡せばいいのかわかりません。 一応、いろいろなサイトやMSDNを覗いたのですが、よく分かりませんでした。 よろしければ、教えてください。環境はVB2005です。 下記のは現在書いているソースなのですが、この場合エラーがでます。 メインプログラム Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click  Dim abc() as integer  ’配列に何かを入れる処理を記述  ’何個の要素が入るかはわかりません。通るときによって変わります。  Dim 123 As New clsAAA  123.ABC = abc  123.処理1() End Sub clsAAA Private pABC() As Integer Public Property ABC() As Integer  Get   Return pABC  End Get   Set(ByVal value As Integer)   pABC = value  End Set End Property

専門家に質問してみよう