VBA для создания текущего списка значений на основе одних и тех же ячеек

#excel #vba

Вопрос:

У меня есть две ячейки (R5 и S5), которые являются агрегатами на основе функции RAND (). Я хочу создать текущий список этих значений, которые изменяются каждый раз, когда лист пересчитывается. В списке должно быть около 100 000 итераций этого. Я написал «тупой» бит VBA, который копирует/вставляет значения в список.

Это своего рода работа, но слишком медленная для масштабирования до 100 тыс. итераций, и по какой-то причине я получаю разрыв каждые 50 записей.

Должен быть лучший / более быстрый способ сделать это с помощью петли или что-то в этом роде? ТИА.

 Sub Macro2() ' ' Macro2 Macro '  '  Range("R5:S5").Select  Selection.Copy  Range("U5").Select  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _  :=False, Transpose:=False  Range("U6").Select  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _  :=False, Transpose:=False  Range("U7").Select  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _  :=False, Transpose:=False End Sub  

Ответ №1:

Рабочий лист Вычисляет

Модуль листа, например Sheet1

 Option Explicit  Private Sub Worksheet_Calculate()  Macro2 Me End Sub  

Стандартный модуль, например Module1

 Option Explicit  Sub Macro2(ByVal ws As Worksheet)  Application.EnableEvents = False  Dim lCell As Range  Set lCell = ws.Cells(ws.Rows.Count, "U").End(xlUp).Offset(1)  lCell.Resize(, 2).Value = ws.Range("R5:S5").Value  Application.EnableEvents = True End Sub  

Комментарии:

1. Спасибо — я получаю ошибку с «Аргумент необязателен» — какие-нибудь указатели?