Внимание: акция!
Только 31 декабря и 1 января — скидка на все надстройки 50% при оплате через СБП
(оплачиваете половину от стоимости, указанной на странице приобретения лицензии)
|
Макросы для Excel. Парсинг сайтов. Программист Excel. Надстройки для Excel, и макросы VBA под заказ. |
|
|
Только 31 декабря и 1 января — скидка на все надстройки 50% при оплате через СБП
Макрос перебирает в цикле все ячейки выделенного диапазона,
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, выделяю только один столбец. Как это можно обойти?
Отправить комментарий