Lets take it slow:
First build a dropdown [Data - Vailadation: list, then type each "Class" name in the box, use a comma between each "Class" name. Put a border around the cell that has the dropdown, so you don't lose it. In a cell above or in front of this dropdown add a label like: Class ==> if the label is to the left of the dropdown.
On the same sheet as your dropdown move to the Right say to Column: AA.
Starting in the first row of Column: AA list the "Items" in that class one item to each row of that column.
Then select that column and from the menu [Insert - Name - Define, in the box type the "Class Name" for that list. The list is now a named range, named your class name.
Do the same for each of the "Class-Items" lists.
Now build your other dropdown as before, only this time put the cell address for your first dropdown in the list values box of the dropdown tool.
Block Copy this code from here [Select code, Right click selection, select copy]
Then on the sheet that has the dropdowns, Right click the sheet tab and select "View Code." In the code window Right click and "Paste" the code.
Change the cell addresses in the code to the cell addresses of your dropdowns and change the sheet names if you need to. Click the top close "X" not the one below it, to return to your sheet.
Select the "Class" dropdown and then select your "Item" dropdown. The "Item" dropdown will now contain all the items found in the list you selected in the first dropdown. Each tine you select a new class in the first dropdown the list of choices in the second dropdown gets replased with the corect list!
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
'Run from Sheet module.
'Automatically correct list for additions!
'This is the class dropdown location.
If Not Intersect(Target, Range("B3")) Is Nothing Then
'This is the items dropdown location.
Worksheets("Sheet1").Range("D3").Value = ""
myDataState = "=" & Worksheets("Sheet1").Range("B3").Value
With Worksheets("Sheet1").Range("D3").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:= _
xlValidAlertStop, Operator:=xlBetween, Formula1:=myState
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = False
.ShowError = False
End With
Else
'This is the class dropdown location.
myData = "=" & Worksheets("Sheet1").Range("B3").Value
'This is the items dropdown location.
With Worksheets("Sheet1").Range("D3").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:= _
xlValidAlertStop, Operator:=xlBetween, Formula1:=myData
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = False
.ShowError = False
End With
End If
End Sub