0
サブルーチンに「Days」という変数があります。私は値を渡したいなどの場合は別のサブルーチン「GetDays」に複数のサブルーチン間で可変値を渡す
をその日の変数を形成:
サブデイ() 薄暗い日()バリアント 日=アレイ(1,3,5,7など、10,11) End Sub
Sub GetDay() 'ここでDaysの値を取得するにはどうすればよいですか? End Sub
サブルーチンに「Days」という変数があります。私は値を渡したいなどの場合は別のサブルーチン「GetDays」に複数のサブルーチン間で可変値を渡す
をその日の変数を形成:
サブデイ() 薄暗い日()バリアント 日=アレイ(1,3,5,7など、10,11) End Sub
Sub GetDay() 'ここでDaysの値を取得するにはどうすればよいですか? End Sub
私はあなたが何をしているか理解していませんが、私の最高の推測は、DayClassオブジェクトを設定して曜日の値を保持し、必要に応じて:VBAエディタで
(1)、
CLASSモジュールを挿入します(2)このモジュールのプロパティウィンドウで、 DayClass(例えば)に名前を変更するには(デフォルト名をオーバーライド"Class1")(3)DayClassモジュールにこのコードを配置:
Private mDays As Variant ' member variable to hold the days array
' initialization method to populate the array
Private Sub Class_Initialize()
mDays = Array(1, 3, 5, 7, 10, 11)
End Sub
' little function to return a particular value from the array
Public Property Get Day(i As Long)
Day = mDays(i)
End Property
(4)、アクションに上記のコードを参照して定期的なモジュールを挿入し、数式バーから起動することができる、その中にこの小さな機能を置くために(あなたがしたい場合):
Public Function GetDays(i As Long)
Dim DC As New DayClass ' DC is dim'd of type DayClass
' so via DC you can get at whatever is in there
GetDays = DC.Day(i) ' this function returns the i'th value of the
' array in DayClass, via DayClass's "Get Day" property
End Function
(5)「GetDays」は、通常のコードモジュールでのパブリック関数であるので、あなたが任意のスプレッドシートのセルに次の数式を入力して、これをテストすることができます。
=GetDays(3)
cell result = 7
ありがとう!これは役に立ちます。ただし、mDays配列は固定されておらず、ユーザー入力ごとに更新されます。私はその長さが5になることを知っていますが、入力は知られていません – user793468
オブジェクトを作成せずにそれを行う方法はありませんか? Classモジュールの代わりにモジュールにmDays配列を持っていて、それを別のモジュールで呼び出すのが好きですか? – user793468
モジュールでもこれを行うことができます。大まかに言えば、各正規のコードモジュールは、使用前にインスタンス化する必要がない(C#の静的クラスのような) "シングルトンクラス"と考えることができ、上に置く変数はすべてクラスメンバー変数。次に、Get Dayをプロパティではなく関数にしてから、mDaysの値を使用する前に、最初に初期化されていることを確認してください(空の場合はテスト、そうであれば初期化ルーチンを呼び出します)。 – tpascale