Frage

es ist ein bisschen verwirrend meine Idee zu schreiben, aber es krank zu versuchen. Hier ist, was ich tun konnte. Ich habe einen Tropfen auf meinen vertikalen Zellen, so habe ich eine Liste von Namen, von denen zu holen ist verknüpft mit [name] -> [definieren] und [Daten] -> [Validierung]. Was ich möchte, ist eine weitere vertikale Zelle einen Tropfen unten, je nach Zustand der ersten aufzufüllen.

zum Beispiel habe ich eine Liste von Obst und Gemüse. Mein erstes Dropdown-Menü fragt den Typen so i Obst wählen. Wegen solchen Auswahl meines zweiten Dropdown gibt mir eine Liste der Früchte nur (kein Gemüse) und umgekehrt. +

Ihre Hilfe wird sehr geschätzt.

Dank Bande!


wenn ich die Zelle statt Gemüse nennen will, aber 2009 und Obst 2010 erhalte ich einen Fehler. gibt es eine Möglichkeit nahe? Dank

War es hilfreich?

Lösung

Lassen Sie uns mit einigen benannten Bereichen arbeiten.

Name E7 "Option"

Put "Gemüse" in E4 und "Früchte" in E5;

in E7, Daten> Validierung> Liste, Quelle $ E $ 4: $ E $ 5;

legte etwas Gemüse in H4: H7; Name, den Bereich "Gemüse";

legte einige Früchte in J4: J7; Name, den Bereich "Früchte";

Nun, in E8:. Daten> Validierung> Liste, source "= INDIREKT (Option)"

Wenn Sie eine Auswahl in E7 machen, werden die Optionen für E8 entsprechend eingestellt.

Andere Tipps

Hier ist mein Code für genau das, was Sie fordern.

Ich habe die unabhängige Spalte als benannte Bereich genannt Major_Category und stellen Sie die Drop-Down-Validierung auf eine Datenliste definiert. Ich habe dann mehrere andere Datenlisten, die cat_subItems benannt sind. Also, für Ihr Beispiel der Hauptkategorie würde Artikel haben

  • Obst
  • Gemüse

dann definierte ich mehr Listen genannt

  • cat_fruit
  • cat_vegetable

, die die Namen der Früchte oder Gemüse enthalten würde. Dann basierend auf der Hauptkategorie Auswahl der Worksheet_Change Veranstaltung wird die Drop-Down-Validierung in der nächsten Spalte über entweder cat_fruit oder cat_vegetable ändern.

Hinweis: Dieser Code ist nicht schön spielt, wenn Sie schützt Arbeitsblatt werden Sie über Excel. Siehe diese Frage mit Excel-Arbeitsblatt / Buchschutz zu tun.

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

Sie können keinen Bereich „2009“ nennen - weil Excel Schwierigkeiten haben würde, zu unterscheiden, dass von dem ganzzahligen Wert 2009. Es gibt einige andere Einschränkungen sind, auch - Sie keinen Bereich „A1“ nennen könnte, weil Excel verwirrt bekommen würde mit der Zelle A1. Was könnten Sie stattdessen tun ist, die 2009 und 2010 in einer Tabelle haben, und neben ihnen die Namen der Bereiche setzen, tun dann einen SVERWEIS den Bereichsnamen zu erhalten. Alternativ können Sie verwenden, sagen wir, „_2009“ und haben Sie Ihre Formel wie

= INDIREKT ( "_" & Option)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top