0

他の 2 つのフィールドに基づいてフォーム内の 1 つのフィールドを更新する Form_Load の VBA コードをループしたいと考えています。現在、最初のレコードまたはレコードをクリックしたときにのみ更新されます。

現在、次のようになっています。

Private Sub Form_Current()

    If Style = "W" And Size = "120" Then ContainerType = 9
    If Style = "W" And Size = "240" Then ContainerType = 2
    If Style = "W" And Size = "360" Then ContainerType = 34
    If Style = "R" And Size = "120" Then ContainerType = 37
    If Style = "R" And Size = "240" Then ContainerType = 5
    If Style = "R" And Size = "360" Then ContainerType = 12
    If Style = "Y" And Size = "120" Then ContainerType = 24
    If Style = "Y" And Size = "240" Then ContainerType = 4
    If Style = "Y" And Size = "360" Then ContainerType = 14
    If Style = ("2Y") And Size = "120" Then ContainerType = 9
    If Style = ("2Y") And Size = "240" Then ContainerType = 25
    If Style = ("2Y") And Size = "360" Then ContainerType = 28
    If Style = ("3Y") And Size = "120" Then ContainerType = 9
    If Style = ("3Y") And Size = "240" Then ContainerType = 51
    If Style = ("3Y") And Size = "360" Then ContainerType = 29

End Sub

おそらくこれを行うためのより良い方法がありますか?

4

2 に答える 2

0

確かに「これを行うより良い方法」は、[ContainerType_lookup] のような名前のテーブルを作成することです。

Style  Size  ContainerType
-----  ----  -------------
W      120               9
W      240               2
W      360              34
...

次に、SQLJOINまたはDLookup()関数を使用して適切なContainerType. その方法...

  1. 何かが変更された場合 (新しい ContainerType など)、必ずしもコードを変更する必要はありません。

  2. アプリケーションの他の場所で ContainerType を派生させる必要がある場合でも、VBA ロジックを複製する必要はありません。

于 2013-05-30T08:43:36.293 に答える
0

私の意見では、Select Case を使用して分割し、読みにくくすることができると思います。また、必要に応じて、サイズまたはスタイルでグループ化することで、さらに整理することもできます。

ただし、クエリの有無にかかわらずテーブルを使用すると、ここでの作業が楽になることに同意します。

Select Case Size
    Case "120" 
        If Style = "W" Then ContainerType = 9
        If Style = "R" Then ContainerType = 37
        ...
    Case "240"
        If Style = "W" Then ContainerType = 2
        If Style = "R" Then ContainerType = 5
        ...
    Case "360"
        If Style = "W" Then ContainerType = 34
        If Style = "R" Then ContainerType = 12
        ...
    Case Else
        Exit Sub
End Select
于 2013-05-30T11:51:08.430 に答える