The reason I asked that is if you're doing this all via code (an incredibly easy way to manage it), you could do it like:
Private Sub UserForm_Initialize()
ComboBox1.Text = "Select Category"
ComboBox1.List = GetChoices("Category")
End Sub
Private Sub ComboBox1_Click() '_Change()
ComboBox2.Text = "Select Type"
ComboBox2.List = GetChoices(ComboBox1.Value)
End Sub
Private Sub ComboBox2_Click() '_Change()
ComboBox3.Text = "Select Item"
ComboBox3.List = GetChoices(ComboBox2.Value)
End Sub
Function GetChoices(ByRef vChoice As String) As Variant()
Dim TempArr() As Variant
Select Case vChoice
Case "Category": TempArr = Array("Hardware", "Software")
Case "Hardware": TempArr = Array("Server", "Workstation", "Peripheral")
Case "Software": TempArr = Array("OS", "Boxed Application", "Developed Software")
Case "Workstation": TempArr = Array("Laptop", "Desktop", "Palmtop")
Case "Peripheral Type": TempArr = Array("Printer", "Screen", "Scanner", "Modem")
End Select
GetChoices = TempArr
End Function
I used a userform to test this, but if you're doing it on a sheet, just change the userform_initialize to whatever you're going to use to populate the first combobox.
I'll attach the file I made this sample in, feel free to adapt and/or ask any questions you may have! All you have to do is update the GetChoices function with all choices you have.