2

私はVBでの経験はありますが、Accessには比較的慣れていません。使用できる答えを見つけるために検索する用語を知らないようですが、私の質問はおそらく非常に単純です。

使用しているタブ コントロールの「OnChange」イベントを作成中です。不明な量の整数を関数に渡したいと考えています。IE: =myFunction(1,4,6) または =myFunction(ArrayList[1,2,4])

これらの数値を扱うオーバーロードされた関数を作成するか、可能であれば整数の配列として渡したいと思います。私の人生では、これを行う方法を正確に理解することはできません。私がこの道を選んだ理由は、関数を可能な限り普遍的なものにするためです。基本的には、関数に送信する数値を変更して動作を変更するだけです。

これは私がやろうとしていることの大まかなコーディングですが、次のようなもの以外に何かを渡す方法はわかりません=myFunction([Form])

Public Function Refresh(tabsToCheck As ArrayList)

    For Each o In tabsToCheck
        If Me.DevForm.Value = o Then
            RefreshAllForms
        End If
    Next o

End Function

Public Function RefreshAllForms()
    Dim f As Form
    For Each f In Access.Forms
        f.Refresh
    Next
End Function

アップデート


将来誰かがこれを必要とする場合に備えて、完成したコードで更新すると思いました。助けてくれてありがとう!

 Public Function RefreshControlTab(ctrl As Access.Control, ParamArray TabsToRefresh())
    Dim i As Long
    Dim lngUBound As Long

    If UBound(TabsToRefresh) >= 0 Then
        lngUBound = UBound(TabsToRefresh)
        For i = 0 To lngUBound
            If ctrl.Value = (TabsToRefresh(i) - 1) Then
            RefreshAllForms
            End If
        Next
    End If
End Function


Public Function RefreshAllForms()
    Dim f As Form
    For Each f In Access.Forms
        f.Refresh
    Next
End Function

つまり、'=RefreshControlTab([DevForm],3,4)' と変更すると、3 番目または 4 番目のタブが選択されたときに更新が実行されます。

4

1 に答える 1

3

「関数に不確定な量の整数を渡したいです。」

それは私のように聞こえParamArrayます。以下の単純な関数を参照してください。一連の数値の合計を返します。

Public Function AddThem(ParamArray MyNumbers()) As Long
    Dim i As Long
    Dim lngReturn As Long
    Dim lngUBound As Long

    If UBound(MyNumbers) >= 0 Then
        lngUBound = UBound(MyNumbers)
        For i = 0 To lngUBound
            lngReturn = lngReturn + MyNumbers(i)
        Next
    End If
    AddThem = lngReturn
End Function

ParamArrayは Variant 値の配列であることに注意してください。したがって、関数内では、問題を回避するために値が数値であることを確認する必要があります...問題の一例は、文字列値で関数を呼び出すときの「型の不一致」エラーです。AddThem("a", "b")

于 2013-10-08T15:12:21.287 に答える