В настоящее время вы страдаете от отсутствия End If
, поэтому ваш текущий код не будет работать вообще. Правильный отступ вашего кода выявил бы проблему. Я также рекомендовал бы не пытаться l oop всех ячеек в вашем текущем диапазоне. Обратите внимание, что это (по крайней мере, для Excel 2019) от 27.262.976 ячеек до go через (вы можете сначала найти интересующий вас диапазон; последняя использованная строка, последний использованный столбец). Это много звонков будет ужасно медленным. Ограничьте эти числа, просто используя как минимум фактические цифры c.
Попробуйте использовать SpecialCells
. Как это работает> <YourRange>.SpecialCells(XlCellType, [XlSpecialCellsValue])
. Например:
Sub Test()
Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Sheet1")
For Each cl In ws.Range("A:Z").SpecialCells(2, 1)
cl.Value = cl.Value / 1000000
Next
End Sub
Где: .SpecialCells(2, 1)
также может читаться как .SpecialCells(xlCellTypeConstants, xlNumbers)
Примечание: Если у вас большие куски ячеек, которые содержат цифры * Для 1023 * значений может быть полезно свойство l oop Areas
вместо Cells
, поскольку вы можете загрузить их в массив и выполнить вычисления в памяти перед вставкой этих значений обратно. Это также может сэкономить вам некоторое время выполнения.