This line sets LcolMatIFC to a number (Long)
LcolMatlFC = Cells(FieldRowMatlFC, 256).End(xlToLeft).Column

This line uses the previous assigned number in the loop, where icol must also have a numeric value
For icol = 1 To LcolMatlFC

This line assigns a numeric value (icol) to SNColMatIFC
SNColMatlFC = icol

I don't see where range names come into this.