1

私は Excel 2007 で一種のテンプレートを開発しています。ユーザーはそれを使用して、3 レベルのカテゴリに分類されるレコードを作成します。ユーザーは、新しいカテゴリを作成したり、既存のカテゴリを指定したり、指定したりしないことができる必要があります。レコードは複数のカテゴリに属する​​場合があります。

カテゴリ構造をユーザーに提示するための最善の選択は何かと考えています。カテゴリはラベルとして機能するため、基本的に VBA プログラミングは必要ありません。この状況に適した Excel のコントロールまたは機能はありますか?

4

2 に答える 2

1

組み込みのデータ検証機能を使用するだけです。リストをポイントすると、フロート レベルのドロップダウンがユーザーに表示されます。 編集: OK、ここでの基本原則はリンクされたリストです。すべてのサブカテゴリには、カテゴリ テキストと親カテゴリがあります。メイン カテゴリが変更されるたびに、サブカテゴリを再フィルタリングして、その親カテゴリに属する​​アイテムのみを表示します。

このアイデアを実装する方法はたくさんあります。これは簡単な例です。これを使用するには、2 つのコンボボックスを含むユーザー フォームを作成し、コードに貼り付けます。

Option Explicit

Private masCat2() As String

Private Sub UserForm_Initialize()
    Me.ComboBox1.List = CreateTestData(0)
    With Me.ComboBox2
        masCat2 = CreateTestData(1)
    End With
End Sub

Private Sub ComboBox1_Change()
    Me.ComboBox2.List = FilterArray(masCat2, Me.ComboBox1.Value)
End Sub

Private Function FilterArray(ByRef vals() As String, ByVal match As String) As String()
    Dim i As Long, j As Long
    Dim asVals() As String
    ReDim asVals(UBound(vals, 1)) As String
    For i = 0 To UBound(vals, 1)
        If vals(i, 0) = match Then
            asVals(j) = vals(i, 1)
            j = j + 1
        End If
    Next
    ReDim Preserve asVals(j - 1)
    FilterArray = asVals
End Function

Private Function CreateTestData(ByVal series As Long) As String()
    Dim asRtnVal() As String
    Select Case series
        Case 0
            ReDim asRtnVal(1) As String
            asRtnVal(0) = "Thing1"
            asRtnVal(1) = "Thing2"
        Case 1
            ReDim asRtnVal(3, 1) As String
            asRtnVal(0, 0) = "Thing1"
            asRtnVal(1, 0) = "Thing1"
            asRtnVal(2, 0) = "Thing2"
            asRtnVal(3, 0) = "Thing2"
            asRtnVal(0, 1) = "ThingA"
            asRtnVal(1, 1) = "ThingB"
            asRtnVal(2, 1) = "ThingC"
            asRtnVal(3, 1) = "ThingD"
    End Select
    CreateTestData = asRtnVal
End Function
于 2010-01-20T03:10:30.990 に答える
0

ユーザーは、新しいカテゴリを作成したり、既存のカテゴリを指定したり、指定したりしないことができる必要があります。レコードは複数のカテゴリに属する​​場合があります。

質問 - ユーザーがカテゴリの任意のレベルに新しいエントリを指定した場合、その新しいエントリは後の行に表示されるオプションのリストの一部になる必要がありますか?

もしそうなら、これはExcelの数式と検証で簡単に実行できる以上のものです. 代わりに、コンボ ボックスを使用した動的リストの VBA の例をオンラインで検索する必要があります。

于 2010-01-22T22:27:28.190 に答える