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