Макрос перебирает в цикле все ячейки выделенного диапазона,
и в пустые ячейки вставляет случайные числа от 1 до 12:
Sub FillBlankCellsWithRandomNumbers() ' заполняет пустые ячейки выделенного диапазона ' случайными значениями от 1 до 12 Dim cell As Range, ra As Range ' ограничиваем выделенный диапазон используемой областью листа Set ra = Intersect(Selection, ActiveSheet.UsedRange) If ra Is Nothing Then MsgBox "В выделенном диапазоне нет пустых ячеек!", _ vbExclamation, "Нечего заполнять" Else Application.ScreenUpdating = False ' отключаем обновление экрана ' перебираем все ячейки в выделенном диапазоне For Each cell In ra.Cells ' если ячейка пустая - вычисляем случайное число, и заносим его в ячейку If Trim(cell) = "" Then cell = Fix(Rnd() * 12 + 1) Next cell ' можно и так - записать во все ячейки формулу, ' а потом заменить формулы значениями 'ra.Formula = "=INT(RAND()*12+1)": ra.Value = ra.Value End If End Sub
Комментарии
При таком большом диапазоне ячеек нужно их не в цикле заполнять,
а записать на лист весь массив целиком.
Попробуйте так:
PS: Я не знаю, из-за чего такая ошибка.
По идее, код не имеет целочисленных счётчиков, и выдавать ошибку Overflow там нечему...
При запуске макроса выдает Overflow, строк в таблице 43000, выделяю только один столбец. Как это можно обойти?
Отправить комментарий