So it's (row, column) rather than (column, row)? As in: (Array(row, column), ? My junk data had too many semicolons. Interesting. If that's the case I might fill it out for each macro to indicate each specific number of columns per array. It might be messier, but I'm trying to stop things from breaking in creative ways.
You seem to have solved all my problems. Thank you. I "do" have one other question!

As part of this function:
Code:
.Range("C5:C14").TextToColumns Destination:=.Range("C5"), _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, _
Comma:=False, Space:=False, Other:=False, _
FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1)), _
TrailingMinusNumbers:=False
I have an extra semicolon set as a null value in the csv pasting, so a user can skip a cell if that stat doesn't apply.
IE: 100;;100; = 100 (null cell) 100
I'd rather idiot proof it by having the function see a particular character as a null value and skip the cell.
IE: 100;z;100; = 100 (null cell) 100
This would allow me to turn back on the preference to see extra semicolons as just "fatfingering" and ensure that the user truly intended to skip over a value. Is a parameter like this possible?