Если 'i' - это диапазон, то вы не можете использовать его в Cells () как целое число. Используйте его как диапазон.
Sub Split()
Dim position
Dim substring As String
Dim cel As Range
For Each cel In ActiveSheet.UsedRange
position = InStr(cel.Value, ":")
If (position > 0) Then
substring = Replace(Left(cel.Value, position - 1), "[", "")
Debug.Print substring
End If
Next i
End Sub
Редактировать: мои глаза начинали кровоточить каждый раз, когда я смотрел на dim i as range
, поэтому я изменил его на cel
. Имя переменной i
обычно связано с типом данных integer или long, поэтому очень приятно видеть, что она используется для диапазона. Это заставило вас и других упустить фактическую проблему исходного кода, потому что мы всегда предполагаем, что в Cells(i
переменная является числом.