• 締切済み

Property Let Property Get について

こんにちは。 <Class1> Private myData(10) as String というクラスがあります。 Property Let とProperty Get を使って myData()の任意の位置のデータを Let/Get したいのですが どうやったら出来ますか? 教えてください。 よろしくお願いします。

みんなの回答

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

配列をプロパティで使用したいなら、 Public Property Get プロパティ名() As Variant Public Property Let プロパティ名(ByVal vNewValue As Variant) みたいにVariant型でやり取りするか、または配列ではなくCollectionで受け渡しを行うと言う方法があります。

関連するQ&A

  • プロパティープロシージャーについて

    簡単な年齢計算プログラムです。 書籍のサンプルなのでうまく動いています。 クラスの変数がPrivate strnameだったりするので そこへアクセスするためにプロパティプロシージャーを使っているというところまでは 判ったような気がしますが、 getとsetの関係がわかりません。 まず、 1.何をGetしているのか 2.なぜGetが先に来るのか、 3.Setの前にGetのReturnで返してますが実態は何を返しているのでしょうか?普通に考えると逆のような気がします。 根本がわかっていないのだと思いますが、どなたかお教え願います。 呼ぶ方 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim person As New Class1() person.Name = TextBox1.Text person.Birthday = DateTimePicker1.Value.Date MessageBox.Show(person.Name & "さんの年齢は" & person.GetAge()) End Sub クラスの方。 Public Class Class1 Private strname As String Private datBirthday As Date Public Property Name() As String Get Return strname End Get Set(ByVal pro_name As String) strname = pro_name End Set End Property Public Property Birthday() As Date Get Return datBirthday End Get Set(ByVal pro_birthday As Date) datBirthday = pro_birthday End Set End Property Public Function GetAge() As Integer Return Int(DateTime.Today.Subtract(Birthday).Days / 365.25) End Function End Class

  • VBAクラスで、プロパティを使わずに、データを受け渡すには?

    はじめまして。 最近、クラスモジュールを使い始めたのですが、 別のクラスに、プロパティを使わずに、 データを受け渡すには、どうすればいいのでしょうか? たとえば、次の2つのクラスがあったとします。 (両方ともString型の読み取り専用のプロパティがある) 'クラスA Private m_Str_A as string Public Property Get Str_A() as String Str_A = m_Str_A End Property 'クラスB Private m_Str_B as string Public Property Get Str_B() as String Str_B = m_Str_B End Property ここで、クラスAで使用したm_Str_Aのデータを クラスBのm_Str_Bへ渡したいのですが、、、、。 別のプロパティを作ればいいだろうと考えたのですが、 それでは、値の変更が可能になってしまいます。 使用環境は、Excel2000 VBA、Windows2000です。 いろいろ調べてみたところ、他の言語か、VB.NETでない と無理そうなことが書かれていました。 仕事場では、他の言語は使用できないので、困ってます。 何か良い方法がありましたら、よろしくおねがいします。

  • EXCEL VBA でユーザー定義型データーをproperty get let を使って受け渡しをしたい

    Excel2002Sp3を使用しています。 (WindowsはXpSp3です) ユーザー定義型の各メンバーに対して、property get/let/set を使用してデーターの受け渡しを行いたいのですが、うまくいきません。 以下に作成したプログラムを載せてみます。 main1()とmain2()がありますが、 main2()だとうまくいきます。 しかし、メンバー個別のやりとりにはなっていません。 main1()のようにメンバー個別でやりとりできるようにする方法がわかりません。 property get/let/setの書き方でできるようになるのでしょうか。 それとも、メンバー個別でのやり取りは仕様上できないのでしょうか。 もしできるのであれば、サンプルコードを教えていただけると助かります。 よろしくお願いします。 ------------------- Class1 ------------------- Option Explicit Private m_xx As X Public Property Get xx() As X xx = m_xx End Property Public Property Let xx(p As X) m_xx = p End Property ------------------- Module1 ------------------- Option Explicit Type X a As Long b As Long End Type Sub main1() '個別にやり取り Dim cc As New Class1 Dim p As Long Dim q As Long cc.xx.a = 5 cc.xx.b = 2 p = cc.xx.a q = cc.xx.b MsgBox p & "," & q End Sub Sub main2() 'yyを用意してまとめてやり取り Dim cc As New Class1 Dim p As Long Dim q As Long Dim yy As X yy.a = 5 yy.b = 2 cc.xx = yy p = cc.xx.a q = cc.xx.b MsgBox p & "," & q End Sub ----------------------------------------

  • エクセルのマクロでクラスのプロパティについて

    エクセルでセルがダブルクリックされたら フォームを表示し、フォーム内のリストボックス のクリック時の値をクラスのプロパティに実装 できるのでしょうか? 以前、仕事でそのようなクラスを呼び出して 使ったことがあるので。 エクセル側 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim cls As New Class1 ' cls.ListSet ' End Sub ↑フォームの表示まで クラスモジュール Option Explicit Public listVal As String Public Function ListSet() As Boolean ' On Error GoTo ErrFunc ' ListSet = True ' With UserForm1 With .ListBox1 .AddItem "a" .AddItem "b" .AddItem "c" End With ' .Show ' End With ' Exit Function ' ErrFunc: ListSet = False End Function Public Property Let val(ByVal data As String) listVal = data End Property Public Property Get val() As String val = listVal End Property フォーム側のListBox1_Clickで どうすればよいか分からなくなりました。 根本的に間違っているのでしょうか? ネットでさがしたのですが参考になる サイトが見つかりません。 解決方法、宜しくお願い致します。

  • C#でプロパティを使わずXMLにデータを保存したい

    C#を使っているのでC・C++のジャンルでいいのか分からないのですがこちらで質問させて下さい。 現在簡単な本の管理をするアプリを作っています。 プロパティをできるだけ使わずにカプセル化して作っていたのですが、肝心のデータを保存する段階で分からなくなりました。 public class Book { private static int _id_gen; private int _id2; private string _isbn; private string _name; public Book(string isbn, string name) { this._isbn = isbn; this._name = name; } } このようにコンストラクタでデータを渡して get プロパティだけあとで追加するようにしています。 こういうデータを保存する際はまとめて保存するのではなくて List<Book> なんかを foreach で回して1件ずつ保存するといいのでしょうか? 読み込む際は1件ずつ読み込んでクラスに設定していくというのが標準的な考え方ですか? 「C# XML 保存」で検索をかけると XmlSerializer でまとめて保存する事例ばかりでちょっと分からなくなってしまいました。 よろしくお願いします。

  • 設定プロパティについて

    Sub InStrSample1() Dim myData As String Dim i As Integer myData = "*******@projecta.co.jp" i = InStr(myData, "@") MsgBox Left(myData, i - 1) End Sub ネット上で上のようなプログラムを見つけ、VBで書いてみたら何も動きませんでした。ダイアログボックスに*******と表示されるらしいんですが、その設定プロパティがわかりません。お願いします。

  • hashMap.getについて

    たびたび、ご質問させて頂きます。 申し訳ありません。 hashMap.getについてなんですが 以下のようにhashMapを設定しました。 --------------------- public class TestMap { /*HashMap生成(クラス変数)*/ class MyData{ public String sDate; public String sName; } ・ ・ ・ Key = oStringTokenizer.nextToken(); oMyData.sDate = oStringTokenizer.nextToken(); oMyData.sName = oStringTokenizer.nextToken(); hashMap.put(Key,oMyData); ----------------- データを取り出したいので、(inputKey)=入力キー --------------- String[] value = (String[]) hashMap.get(inputKey); System.out.println("日付:" + value[1] + " 名前:" + value[2]); --------------- と、したんですが、エラーは出ないもののSystem.out.printlnの箇所でなにも表示されません。 たびたび、ご質問させて頂いて本当に申し訳ありませんが、ご教授して頂けたら幸いです。

    • ベストアンサー
    • Java
  • interface プロパティ

    【ケース1】 class Class1 { public string str { get; set; } public int x { get; set; } } 【ケース2】 class Class1 : Class2, Class3 { public string str { get; set; } public int x { get; set; } } interface Class2 { int x { get; set; } } interface Class3 { string str { get; set; } } インターフェースのプロパティの実装をしています、【ケース2】です。 これと【ケース1】ってどこがどう違うのでしょうか?何か同じな感がぬぐえません class2とclass3のプロパティを再定義してるという感がしません。。 実装の仕方がまちがってる場合はご指摘ください。お願いします。

    • ベストアンサー
    • Java
  • プロパティのアクセス修飾子

    オート・インプリメント・プロパティで、 Property Prop2 As String = "Empty" と書いた場合の、Propertyのアクセス修飾子はPublicになるのでしょうか? あるVBの記述で、 Private CurrentValue As Integer Private Property Current As Integer Get Return CurrentValue End Get Set(ByVal value As Integer) CurrentValue = value    その他諸々の記述   End Set End Property というのがあるのですが、外部から、 Current += 1 などのようにアクセスしています。 この場合、Property Current As Integer のアクセス修飾子がPrivateになっているのですが、 Public とした場合と何が違うのでしょうか? ちなみに両方でやってみましたが、動作は変わりませんでした。 御経験のある方、御教示願えたらと思います。

  • VB.NET getとsetの概念がわかりません。

    GetとSetがどういう働き・意味をもっているのか理解できていません。 たとえばSpecialTextBoxというクラスがあったとします。 *************************************************************** Imports System.Web.UI.MobileControls Partial Class SpecialTextBox Inherits System.Web.UI.MobileControls.MobileUserControl Public Property Item() As SelectionList Get Return Me.CheckBox End Get Private Set(ByVal value As SelectionList) Me.CheckBox = value End Set End Property End Class **************************************************************** ここでのGet Setはどういう動き・働きをしているんでしょうか? わかる方がいたらご助言お願いいたします。 (サンプルソースなどがあれば理解しやすいかもしれません。。)

専門家に質問してみよう