Got it.
Instead of Range(row, 2) you need to use Cells(row, 2). Range will accept only a string as an argument, as in Range("P12").
While we're at it, I can't help giving you some tips:
I would use [tt]For row = 4 To x Step 2[/tt] instead of a Do...Loop construction.
I would set up the validation only once, inside the spreadsheet, not in the code. You'll find out why when you run the code multiple times.
I like to explicitly use the .Value property when you access the value of a cell, so instead of [tt]Cells(row, 9) =[/tt], I would use [tt]Cells(row, 9).Value =[/tt].
Instead of the multiple If's a Select Case statement is much more structured:
[tt] Select Case Cells(row, 2).Value
Case "Plate"
Cells(row, 9) = Cells(row, 5) * Cells(row, 6) * Cells(row, 7) * Cells(row, 8)
Case "Angle Bar"
Cells(row, 9) = (Cells(row, 6) + Cells(row, 7)) * Cells(row, 5) * Cells(row, 8)
Case "Round Bar"
Cells(row, 9) = Cells(row, 5) * Cells(row, 3) ^ 2 * Pi / 4 * Cells(row, 8)
Case "Tube"
Cells(row, 9) = (Cells(row, 3) ^ 2 * 3.1415 / 4 - Cells(row, 4) ^ 2 * 3.1415 / 4) * Cells(row, 5) * Cells(row, 8)
Case Else
'if you want to trap invalid input
End Select[/tt]
Happy programming!
Cheers,
Joerd
Please see FAQ731-376 for tips on how to make the best use of Eng-Tips.