So this is code i wrote to check Product structure from 1 table in a database......so..... yea, why not right?
so its based on type which can have area(s) and area(s) can have group(s)
so I have
type and code area: blank group: blank type and area and code group:blank type and area and group and code
so as you can see it is stacked and the lookup is layered to find the correct code...Is there somethings I can do to improve it?
Public Function StackLayeredLookup() Dim Start As Integer Dim lStart As Integer Dim cRows As Integer Dim lRows As Integer Dim TypeValue As String Dim TypeCode As String Dim AreaValue As String Dim AreaCode As String Dim GroupValue As String Dim GroupCode As String Dim aValue As String Dim dValue As String Const TypeCol = "G" Const AreaCol = "H" Const GroupCol = "I" Const RegCol = "E" Const tValueCol = "P" Const aValueCol = "Q" Const gValueCol = "R" 'Region = "MEX" Start = 2 cRows = Worksheets(2).UsedRange.Rows.Count lRows = Worksheets("TagCodes").UsedRange.Rows.Count Do Until Start = cRows TypeValue = Worksheets(2).Range(TypeCol & CStr(Start)).Value AreaValue = Worksheets(2).Range(AreaCol & CStr(Start)).Value GroupValue = Worksheets(2).Range(GroupCol & CStr(Start)).Value If (TypeValue <> "") Then TypeCode = "" lStart = 1 Do Until TypeCode <> "" Or lStart = lRows + 1 If (Worksheets("TagCodes").Range("A" & CStr(lStart)).Value = TypeValue) Then aValue = Worksheets("TagCodes").Range("C" & CStr(lStart)).Value gValue = Worksheets("TagCodes").Range("D" & CStr(lStart)).Value If (aValue = " " And gValue = " ") Then Worksheets(2).Range(tValueCol & CStr(Start)).Value = Worksheets("TagCodes").Range("B" & CStr(lStart)).Value TypeCode = Worksheets(2).Range(tValueCol & CStr(Start)).Value Exit Do End If Else lStart = lStart + 1 End If Loop If (TypeCode = "") Then Worksheets(2).Range(TypeCol & CStr(Start)).Interior.Color = RGB(255, 0, 0) Else Worksheets(2).Range(TypeCol & CStr(Start)).Interior.Color = RGB(0, 255, 0) End If If (TypeCode <> "" And AreaValue <> "") Then AreaCode = "" lStart = 1 Do Until AreaCode <> "" Or lStart = lRows + 1 If (Worksheets("TagCodes").Range("A" & CStr(lStart)).Value = AreaValue) Then gValue = Worksheets("TagCodes").Range("D" & CStr(lStart)).Value If (Worksheets("TagCodes").Range("B" & CStr(lStart)).Value = TypeCode And gValue = " ") Then Worksheets(2).Range(aValueCol & CStr(Start)).Value = Worksheets("TagCodes").Range("C" & CStr(lStart)).Value AreaCode = Worksheets(2).Range(aValueCol & CStr(Start)).Value Exit Do Else lStart = lStart + 1 End If Else lStart = lStart + 1 End If Loop If (AreaCode = "") Then Worksheets(2).Range(AreaCol & CStr(Start)).Interior.Color = RGB(255, 0, 0) Else Worksheets(2).Range(AreaCol & CStr(Start)).Interior.Color = RGB(0, 255, 0) End If If (TypeCode <> "" And AreaCode <> "" And GroupValue <> "") Then GroupCode = "" lStart = 1 Do Until GroupCode <> "" Or lStart = lRows + 1 If (Worksheets("TagCodes").Range("A" & CStr(lStart)).Value = GroupValue) Then If (Worksheets("TagCodes").Range("B" & CStr(lStart)).Value = TypeCode And Worksheets("TagCodes").Range("C" & CStr(lStart)).Value = AreaCode And Worksheets("TagCodes").Range("D" & CStr(lStart)).Value <> " ") Then Worksheets(2).Range(gValueCol & CStr(Start)).Value = Worksheets("TagCodes").Range("D" & CStr(lStart)).Value GroupCode = Worksheets(2).Range(gValueCol & CStr(Start)).Value Exit Do Else lStart = lStart + 1 End If Else lStart = lStart + 1 End If Loop If (GroupCode = "") Then Worksheets(2).Range(GroupCol & CStr(Start)).Interior.Color = RGB(255, 0, 0) Else Worksheets(2).Range(GroupCol & CStr(Start)).Interior.Color = RGB(0, 255, 0) End If Else Worksheets(2).Range(GroupCol & CStr(Start)).Interior.Color = RGB(255, 0, 0) End If Else Worksheets(2).Range(AreaCol & CStr(Start)).Interior.Color = RGB(255, 0, 0) Worksheets(2).Range(GroupCol & CStr(Start)).Interior.Color = RGB(255, 0, 0) End If Else Worksheets(2).Range(TypeCol & CStr(Start)).Interior.Color = RGB(255, 0, 0) Worksheets(2).Range(AreaCol & CStr(Start)).Interior.Color = RGB(255, 0, 0) Worksheets(2).Range(GroupCol & CStr(Start)).Interior.Color = RGB(255, 0, 0) End If Start = Start + 1 Loop End Function