0

vbaユーザーフォームの使用に慣れていないか快適ではないため、作成したスプレッドシートベースのユーザーフォームを介して情報が入力された複数の大きなテーブルを含むスプレッドシートで作業しており、それらを編集するためにエントリを元に戻そうとしています。

これを行う最も簡単な方法は、デフォルトの Excel データフォームを開くことです。私が知る必要があるのは; 条件がすでに入力されている特定のテーブルのこのデータフォームを開く方法はありますか?

例えば。製品テーブルを編集する必要があるため、製品テーブルを編集していることはすでにわかっており、製品の名前もわかっています。ここでもスプレッドシート ベースの小さなユーザー フォームがあり、エントリ タイプ (この場合は製品) を選択してから製品名を入力します。私がしたいのは、その情報を使用して、名前の基準フィールドが既に入力された製品テーブルのデータフォームを開き、これらのテーブルには何百ものエントリがあるため、エントリの検索にかかる時間を短縮することです。

4

1 に答える 1

1

この簡単な例では、「製品」と呼ばれる製品を含むワークシートを取り上げます。列Aに名前があり列BにIDがある2つの列があります

ユーザーフォームに、という2つのテキストボックスを配置します

  • TextBox_Productname

  • TextBox_ProductID

次に、製品名テキストボックスの値が変更されてフォーカスが失われるたびにトリガーされる次のコードをユーザーフォームに追加しました。

Private Sub TextBox_Productname_Change()

    ' Clear the content of all Textboxes but the Productname
    TextBox_ProductID.Value = ""

    ' Analyse the Cells in the Worksheet called "Products"
    With Worksheets("Products")

        ' Assume in the first row are the headers so start
        ' looking at the second row and go to the final one
        For i = 2 To .UsedRange.Rows.Count

            ' check whether the value in the first column
            ' matches the value of the Textbox_Productname
            If .Cells(i, 1) = TextBox_Productname.Value Then

                ' If there is a match copy the values of all
                ' the other columns to the textboxes
                TextBox_ProductID.Value = .Cells(i, 2)
            End If

        Next i

    End With

End Sub
于 2013-01-27T00:15:58.563 に答える