Я пытаюсь написать макрос, который позволит мне проверить платежеспособность человека в зависимости от его / ее страны проживания.
У меня есть список кодов стран (строки "S73: S128"), например, "SE" для Швеции, "UK" для Великобритании и т. Д. У меня также есть список среднего дохода для всех стран (строки "T73: T128")
.
Макрос должен редактировать лист («Калькулятор»), который рассчитывает платежную способность, а затем копировать результаты в другой лист («Результаты»). Для каждой страны существует три сценария: человек живет один (O38 = 1, O39 = 0 в приведенном ниже коде), человек делит свое домашнее хозяйство с другим взрослым (O38 = 2, O39 = 0 в приведенном ниже коде) или лицом живет с другим взрослым и ребенком (O38 = 2 и O39 = 1).
Я думал, что самый простой способ сделать это - цикл for.
Это должно пройти через эти шаги:
- Активировать калькулятор
- Установить для взрослых в семье (O38) значение 1.
- Установить детей в семье (O39) на 0.
- Изменить значение ячейки кода страны (O9) на код страны текущей итерации (то есть выполнить итерацию в диапазоне S73: S128)
- Скопировать код страны из O9
- Активировать лист результатов
- Вставьте скопированный код страны в первую пустую ячейку в столбце A
... затем вводим доход текущей итерации в ячейку O23, копируем вывод платежной способности (N52) в первую пустую ячейку в столбце B таблицы результатов и т. Д. *
Вот мой нерабочий код:
Sub LoopThroughCountries()
Dim CountryCode As Range
Dim CountryIncome As Range
Dim i As Long
Set CountryCode = Range("S73:S128")
Set CountryIncome = Range("T73:T128")
For i = 1 To CountryCode.Rows.Count
Worksheets("Calculator").Activate
Range("O38").Value = 1
Range("O39").Value = 0
Range("O9").Value = Range("CountryCode" & i)
Range("O9").Copy
Worksheets("Results").Activate
Range("A1").End(xlDown).Offset(1, 0).PasteSpecial xlPasteValues
Worksheets("Calculator").Activate
Range("O23").Value = Range("CountryIncome" & i)
Range("N52").Copy 'N52 is the payment ability output cell
Worksheets("Results").Activate
Range("B1").End(xlDown).Offset(1, 0).PasteSpecial xlPasteValues 'Pastes payment ability of scenario 1
Worksheets("Calculator").Activate
Range("O38").Value = 2
Range("N52").Copy
Worksheets("Results").Activate
Range("C1").End(xlDown).Offset(1, 0).PasteSpecial xlPasteValues 'Pastes payment ability of scenario 2
Worksheets("Calculator").Activate
Range("O39").Value = 1
Range("N52").Copy
Worksheets("Results").Activate
Range("D1").End(xlDown).Offset(1, 0).PasteSpecial xlPasteValues 'Pastes payment ability of scenario 3
Next i
End sub
Первая строка с ошибкой такая:
Range("O9").Value = Range("CountryCode" & i)
выдает ошибку: «Метод« Range »объекта« _Global »не выполнен»
Что мне здесь не хватает? Я пытался найти, как использовать Range в VBA. Я думал, что «Range (« CountryCode »& i)» в основном даст мне значение i-й итерации CountryCode-range. Линия неполная?