#arrays #vba #loops #variables
#массивы #vba #циклы #переменные
Вопрос:
У меня есть длинный скрипт, который я хочу воссоздать как цикл. Я столкнулся с проблемой, касающейся одной из моих переменных. С помощью цикла я хочу воссоздать имя переменной и получить ее значение, которое уже было вставлено ранее в сценарий.
Рассматриваемая переменная — EngineeringEndDate . Через цикл я могу получить имя этой переменной, загруженное в ActivityNameEndDate. Есть ли способ получить значение EngineeringEndDate в моем цикле?
Вот сценарий:
EngineeringEndDate = 01-01-2020
PurchaseEndDate = 01-02-2020
<Etc.>
For S = 115 To 128
RoutingID = Settings.Range("A" amp; S).Value
ActivityNameEndDate = Settings.Range("B" amp; S).Value amp; "EndDate"
ActivityEndDate = DateValue(Format(<<EngineeringEndDate>>, "dd-mm-yyyy"))
Next S
gfdg
Комментарии:
1.
ActivityEndDate = DateValue(Format(EngineeringEndDate, "dd-mm-yyyy"))
<< который будет использовать значение, поскольку имя — это просто метка, связанная со значением.2. Так выглядит мой скрипт в настоящее время. Но я хотел бы, чтобы этот цикл выполнял insert EngineeringEndDate, а затем PurchaseEndDate и т. Д. Всего существует 49 действий, которые должны пройти через цикл. В настоящее время у меня один и тот же сценарий 49 раз
3. вставьте куда, пожалуйста? Что не работает с написанным кодом?
4. Вставка значения различных действий в цикле по одному. Например, S = 115 приводит к ActivityNameEndDate = «EngineeringEndDate». Но S = 116 приводит к ActivityNameEndDate = «PurchaseEndDate». Я хотел бы получить соответствующую дату в цикле.
5. Если вы спрашиваете о том, о чем я думаю, вы спрашиваете, вы не можете этого сделать. Вы не можете использовать содержимое ячейки для определения строки, представляющей переменную. Используйте массив,
Ответ №1:
Вы можете использовать массив — и сократить свой код:
Dim EngineeringEndDate As Date
Dim PurchaseEndDate As Date
' ...
Dim InvoiceDate As Date
Dim Dates(115 To 128) As Date
EngineeringEndDate = #01/01/2020#
PurchaseEndDate = #02/01/2020#
' ...
InvoiceDate = #02/15/2020#
Dates(115) = EngineeringEndDate
Dates(116) = PurchaseEndDate
' ...
Dates(128) = InvoiceDate
For S = LBound(Dates) To UBound(Dates)
RoutingID = Settings.Range("A" amp; S).Value
ActivityNameEndDate = Settings.Range("B" amp; S).Value amp; "EndDate"
ActivityEndDate = Dates(S)
Next S