1

私のアイデアを書くのは少し混乱しますが、試してみてください。これが私ができたことです。垂直セルにドロップダウンがあるので、[name]-> [define] および [data] -> [validation] でリンクされている名前のリストを選択できます。私が望むのは、最初の条件に応じて別のドロップダウンを設定するための別の垂直セルです。

たとえば、果物と野菜のリストがあります。最初のドロップダウン メニューで種類を尋ねられるので、果物を選択します。このような選択により、2 番目のドロップダウンには果物のみ (野菜なし) のリストが表示され、その逆も同様です。

あなたの助けは大歓迎です。

ありがとうギャング!


セルに野菜ではなく 2009 と果物 2010 という名前を付けたい場合、エラーが発生します。方法はありますか?ありがとう

4

3 に答える 3

0

範囲に「2009」という名前を付けることはできません。これは、Excel がそれを整数値 2009 と区別するのに問題があるためです。他にもいくつかの制限があります。Excel がセルと混同されるため、範囲に「A1」という名前を付けることはできませんでした。 A1. 代わりにできることは、2009年と2010年をテーブルに入れ、それらの横に範囲の名前を入れてから、VLOOKUPを実行して範囲名を取得することです. または、たとえば「_2009」を使用して、式を次のようにすることもできます

=INDIRECT("_" & オプション)

于 2009-04-09T19:52:02.257 に答える
0

これは、あなたが求めていることを正確に行うための私のコードです。

独立した列を名前付き範囲として定義しMajor_Category、ドロップダウン検証をデータリストに設定しました。次に、 という名前の他のデータ リストがいくつかありますcat_subItems。したがって、あなたの例では、主要なカテゴリにはアイテムがあります

  • フルーツ
  • 野菜

それから私は呼ばれるより多くのリストに定義しました

  • cat_fruit
  • 猫_野菜

果物や野菜の名前が含まれます。次に、主要なカテゴリの選択に基づいて、Worksheet_change イベントにより、次の列のドロップダウンの検証が または のいずれかに変更されcat_fruitますcat_vegetable

注: Excel の保護ワークシートを使用している場合、このコードは正しく動作しません。Excel のワークシート/ブック保護に対処するには、この質問を参照してください。

Public Sub Worksheet_Change(ByVal target As Range)
On Error GoTo ErrHandler:

Dim VRange As Range, cell As Range
Dim msg As String
Dim validateCode As Variant
Dim modCell As Range
Set VRange = Range("Major_Category")

If Intersect(VRange, target) Is Nothing Then Exit Sub

For Each cell In Intersect(VRange, target)
    b = cell.Value
    curRow = target.Row

    Set modCell = cell.Offset(0, 1) 'cell to modify the validation'

    If Not (b = "") Then
        modCell.Validation.Delete
        modCell.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _

        'sets the validation formula to the list/range name'
        xlBetween, Formula1:="=cat_" & b 

        modCell.Validation.IgnoreBlank = True
        modCell.Validation.InCellDropdown = True
        modCell.Validation.InputTitle = ""
        modCell.Validation.ErrorTitle = ""
        modCell.Validation.ErrorMessage = ""
        modCell.Validation.ShowInput = True
        modCell.Validation.ShowError = True

    End If
Next cell


Cleanup:

Exit Sub

ErrHandler:
MsgBox Err, vbOKOnly, "Error Occurred"
Resume Cleanup:

End Sub
于 2009-04-08T23:16:35.933 に答える