Hi, gmelchor!
Give a look to this file:
https://dl.dropboxusercontent.com/u/60558749/Cascading%20list%20without%20data%20validation_%20%28for%20gmelchor%20at%20chandoo.org%29.xlsm
It has a state list in column A, N city lists from column 2 thru N+1, a vertical scroll bar for states in columns W:X, a vertical scroll bar for cities in columns AA:AB, and displays selected state & city (orange shaded) in ranges X1:Y1 and AB1:AC1 respectively (yellow shaded).
It uses 4 dynamic named ranges and 1 fixed named range:
StateList: =DESREF(Hoja1!$A$2;;;CONTARA(Hoja1!$A:$A)-1;1) -----> in english: =OFFSET(Hoja1!$A$2,,,COUNTA(Hoja1!$A:$A)-1,1)
StateSelectableList: =DESREF(Hoja1!$W$2;;;CONTARA(Hoja1!$W:$W)-1;1) -----> in english: =OFFSET(Hoja1!$W$2,,,COUNTA(Hoja1!$W:$W)-1,1)
CityList: =DESREF(INDIRECTO(DIRECCION(2;COINCIDIR(StateSelected;StateList;0)+1;1;1));;;CONTARA(DESREF(INDIRECTO(DIRECCION(2;COINCIDIR(StateSelected;StateList;0)+1;1;1));;;CONTARA(INDIRECTO(IZQUIERDA(DIRECCION(2;COINCIDIR(StateSelected;StateList;0)+1;1;1);HALLAR("$";DIRECCION(2;COINCIDIR(StateSelected;StateList;0)+1;1;1);2)-1)&":"&IZQUIERDA(DIRECCION(2;COINCIDIR(StateSelected;StateList;0)+1;1;1);HALLAR("$";DIRECCION(2;COINCIDIR(StateSelected;StateList;0)+1;1;1);2)-1)))-1;1));1) -----> in english: =OFFSET(INDIRECT(ADDRESS(2,MATCH(StateSelected,StateList,0)+1,1,1)),,,COUNTA(OFFSET(INDIRECT(ADDRESS(2,MATCH(StateSelected,StateList,0)+1,1,1)),,,COUNTA(INDIRECT(LEFT(ADDRESS(2,MATCH(StateSelected,StateList,0)+1,1,1),SEARCH("$",ADDRESS(2,MATCH(StateSelected,StateList,0)+1,1,1),2)-1)&":"&LEFT(ADDRESS(2,MATCH(StateSelected,StateList,0)+1,1,1),SEARCH("$",ADDRESS(2,MATCH(StateSelected,StateList,0)+1,1,1),2)-1)))-1,1)),1)
CitySelectableList: =DESREF(Hoja1!$AA$2;;;CONTARA(Hoja1!$AA:$AA)-1;1) -----> in english: =OFFSET(Hoja1!$AA$2,,,COUNTA(Hoja1!$AA:$AA)-1,1)
StateSelected: =Hoja1!$Y$1
Formulas:
a) State selection
W2: =DESREF(A$1;X$1+FILA()-2;0) -----> in english: =OFFSET(A$1,X$1+ROW()-2,0)
X1: vsbState linked cell
Y1: =INDICE(StateList;X1) -----> in english: =INDEX(StateList,X1)
b) City selection
AA2: =DESREF(INDIRECTO(DIRECCION(1;X$1+1;1;1));AB$1+FILA()-2;0) -----> in english: =OFFSET(INDIRECT(ADDRESS(1,X$1+1,1,1)),AB$1+ROW()-2,0)
AB1: vsbCity linked cell
AC1: =INDEX(CityList;AB1) -----> in english: =INDEX(CityList,AB1)
VBA code for worksheet (split if required if using different worksheets):
-----
[pre]
Code:
Option Explicit
' constants
Const gksMainWS = "Hoja1"
Const gksMainList = "StateList"
Const gksMainSubList = "StateSelectableList"
Const gksDependentWS = "Hoja1"
Const gksDependentList = "CityList"
Const gksDependentSubList = "CitySelectableList"
Private Sub Worksheet_Change(ByVal Target As Range)
' constants
' declarations
' start
If Application.Intersect(Target, Worksheets(gksMainWS).Range(gksMainList)) Is Nothing Then Exit Sub
' process
StateResizeCount
' end
End Sub
Private Sub vsbState_Change()
CityResizeCount
End Sub
Private Sub StateResizeCount()
' constants
' declarations
' start
' process
vsbState.Max = Worksheets(gksMainWS).Range(gksMainList).Rows.Count
' end
End Sub
Private Sub CityResizeCount()
' constants
' declarations
' start
' process
vsbCity.Max = Worksheets(gksDependentWS).Range(gksDependentList).Rows.Count
' end
End Sub
[/pre]
-----
Just advise if any issue.
Regards!