Помимо очевидного i As String
, незаконно используемого в качестве целочисленного значения для подсчета циклов (должно быть объявлено As Long
), вы инвертируете аргументы RowIndex
и ColumnIndex
неявного вызова Range.[_Default]
члена :

Sheet1.Cells("B", i).Value
"B"
недопустимо RowIndex значение.
Правило большого пальца, избегайте Range.Cells
, когда у вас есть строка для столбца; используйте его, когда у вас есть строка index и столбец index , то есть числовые значения для строки и столбца.
Если у вас есть строка заголовка столбца, такая как "B"
, используйте свойство Range
и объедините адрес ячейки, например, Sheet1.Range("B" & i)
.