Значение индекса для - макрос VBA Excel, который изменяет значение ячейки и запускает модель - PullRequest
0 голосов
/ 17 января 2020

Я создал макрос, который изменяет значение в ячейке с именем «option». Как только значение изменяется, результаты изменяются в модели, чтобы отразить это.

Например:

a) Option 1: best case scenario sales -> Cell "option" input 1 
b) Option 2: worst case scenario sales -> Cell "option" input 2
c) etc

Затем макрос копирует результаты из модели в новую таблицу. Так, например, он копирует результаты модели из ячейки с именем «cost» (которая является динамической c ячейкой, которая зависит от того, какая модель выплевывает) в новую ячейку с именем «cost_1», которая будет stati c. Пример кода ниже.

Макрос работает очень хорошо, однако, если я захочу ввести 100 вариантов, код будет очень длинным.

Может ли кто-нибудь помочь с созданием общей ссылки в коде, например, Dim i As Integer i = i + 1, которая будет работать до 100? это изменило бы имена ячеек, например, cost_i, потом пошло, cost_1, cost_2 cost_3 ... et c.

Очень хотел бы получить вашу помощь.

С уважением Ян

Sub RunModel()
' RunModel Macro
....
'Choose Option 1 
Range("option").Select
ActiveCell.FormulaR1C1 = "1"

'Copy costs when option 1 is selected to a new cell
[costs].Select
Selection.Copy
[costs_1].Select
Selection.PasteSpecial Paste:=xlPasteValues

'Copy number of customers when option 1 is selected to a new cell
[customers].Select
Selection.Copy
[customers_1].Select
Selection.PasteSpecial Paste:=xlPasteValues

....
etc
....

'Choose Option 2
Range("option").Select
ActiveCell.FormulaR1C1 = "2"

'Copy costs when option 2 is selected to a new cell
[costs].Select
Selection.Copy
[costs_2].Select
Selection.PasteSpecial Paste:=xlPasteValues

'Copy number of customers when option 2 is selected to a new cell
[customers].Select
Selection.Copy
[customers_2].Select
Selection.PasteSpecial Paste:=xlPasteValues

....
etc
....

1 Ответ

0 голосов
/ 17 января 2020
Sub RunModel()
    dim i as long
    for i = 1 to 100 'Change this to whatever you need it to be
        'No need to select and activate cells or use the clipboard, just copy the values
        range("option").FormulaR1C1 = i
        range("costs_" & i).value = range("costs").value
        range("customers_" & i).value = range("customers").value
        'Do some more stuff
    next i
    'Do some more stuff
end sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...