Я довольно новичок в Stack Overflow и VBA, так что простите.
For x = 1 To Rows
For y = 1 To rs.Fields.Count
Select Case rs.Fields(y - 1)
Case rs![begin_date], rs![end_date]
Z = CDate(rs.Fields(y - 1))
Case rs![deadline_date]
If rs![update_date] = "" Or IsNull(rs![update_date]) Then
Z = Calculate_deadline(rs![begin_date], rs![sla], _
rs![special_calendar])
Else
Z = Calculate_deadline(rs![update_date], rs![sla], _
rs![special_calendar])
End If
Case Else
Z = rs.Fields(y - 1)
End Select
table_list_object.HeaderRowRange.Cells(x + 1, y).Value = Z
Next y
rs.MoveNext
Next x
Итак, в двух словах, я пишу код VBA в Access, который выполняет запрос для сбора данных.обо всех датах проекта, вычисляет его сроки и записывает все это в таблицу Excel.
Функциональная часть вычисляет дату крайнего срока.
Проблема в том, что я записываю все данные по одному,как это:
table_list_object.HeaderRowRange.Cells(x + 1, y).Value = z
Это может занять некоторое время, и я уверен, что это сильно замедляет мой макрос, но каждое учебное пособие по VBA, которое я видел, работало так:
ИЯ немного скептически отношусь к вопросу Select Case
... Так лучше, или я должен вместо этого использовать If ... Else
?
В любом случае, этот набор записей имеет 15.000 строк, но для его выполнения требуются часы,и первый раз, когда я запускал этот код, это заняло всего несколько минут.
Да, кстати, Calculate_deadline
также может быть проблемой, я знаю.Но сначала я хочу быть уверенным в этой части моего кода, просто чтобы этот вопрос не был слишком большим и сложным для объяснения.
Спасибо!