That error can be caused by two things, and it's more likely the second thing. The first thing is that strFin(Z) is undefined because Z is not a valid index. However, you set elements 1, 2, and 3 above, and the loop goes from 1 to 3, so that part looks OK. This error can also be caused if strFin(Z) does not return an existing sheet name. So I'll bet one of these sheets doesn't exist (if you think they all three exist, double check for typos on the tabs). Note that this is the name that the user sees on the tab.
"basicmaterials"
"consumergoods"
"financial"
I see another problem too, in that line of code, which may not cause a runtime error but will cause a bug. An unqualified reference to Rows will refer to the active sheet if this is a Module, or the sheet containing the code if it's a Sheet Module. Either one will be wrong for your situation. You need to qualify Rows:
Bookmarks