1

計算を行い、別のテキスト ボックスに回答を表示するために、特定のテキスト ボックスをループ処理したい Access データベースがあります。ループしようとすると、フォーム上のすべてのコントロール (Form.Controls) メソッドをループします。ボタンがクリックされたときに、4 つの特定のテキスト ボックス (txtbx1、txtbx2、txtbx3、txtbx4) のみをループしたいと思います。

説明... TextBox_A には数値が含まれています ボタンをクリックすると、TextBox_A から数値を取得し、2800 を掛けてから 12 で割ります。計算の答えを txtbx1 に表示します。

上記の 4 つのテキストボックスのそれぞれに対してこれを行います。次に、各テキストボックス (txtbx1、txtbx2、txtbx3、txtbx4) の合計を合計する「合計」テキストボックスを作成します。これに新しく、完全に途方に暮れている、助けてください。

4

2 に答える 2

5

すべてのコントロールには Tag プロパティがあります。アルゴリズムに値を含めたいテキスト ボックスの Tag プロパティを設定します ("INClUDE" など)。フリーフォーマットのテキストなので、好きなものを入れてください。

次に、次のようなフォーム イベントに関連付けられたコードを記述します。

 Dim c As Control
Dim txt As TextBox

For Each c In Me.Controls

    'check it's a text box ...
    If TypeOf c Is TextBox Then

        'see if including ...
        Set txt = c
        If Len(txt.Tag) > 0 Then

            'do something here (I've coloured, to show works)
            txt.BackColor = 10

        End If

    End If

Next c

問題のテキストボックスを参照する追加の変数 txt を設定して、オートコンプリートを使用して TAG プロパティを取得できるようにしました (これは縮小変換と呼ばれていると思います!)。

于 2012-11-08T15:06:52.927 に答える
0

TextBox_A (_B / _C など) の名前を TextBox_1 / _2 / _3 などに変更すると、より簡単になります。次に、これを試してください。

Dim i As Integer
For i = 1 To 4
    Controls("txtbx" & i) = Val(Controls("TextBox_" & i)) * 2800 / 12
Next

そうでなければ、これも機能しますが、読みにくいです:

= Val(Controls("TextBox_" & Chr(Asc("A") + i - 1))) * 2800 / 12
于 2012-11-08T13:51:04.667 に答える