Мне очень понравился код @ brettdj, но потом я обнаружил, что когда я добавил дополнительный код для редактирования копии, он переписал мой оригинальный лист. Я подправил его ответ так, чтобы дальнейший код, указанный на ws1
, повлиял на новый лист, а не на оригинал.
Sub Test()
Dim ws1 as Worksheet
ThisWorkbook.Worksheets("Master").Copy
Set ws1 = ThisWorkbook.Worksheets("Master (2)")
End Sub
Со всеми этими вариациями в способе указания повторения, Я бы уклонился от реализации единой структуры данных, чтобы учесть все 5 сценариев.
Вместо этого я бы (и в предыдущем проекте) построил бы простые структуры, которые обращаются к каждому типу повторения. Вы можете обернуть их все так, чтобы это было похоже на единую структуру данных, но под капотом они могли делать все, что захотят. Реализовав интерфейс, я смог одинаково обрабатывать каждый тип повторения, так что это выглядело как структура данных, подходящая для всех. Я мог бы запросить у любого экземпляра все даты повторения в течение определенного периода времени, и это помогло.
Я также хотел бы узнать больше о том, как эти даты должны использоваться, прежде чем остановиться на конкретной реализации.
Вы можете обернуть их все так, чтобы это было похоже на единую структуру данных, но под капотом они могли делать все, что захотят. Реализовав интерфейс, я смог одинаково обрабатывать каждый тип повторения, так что это выглядело как структура данных, подходящая для всех. Я мог бы запросить у любого экземпляра все даты повторения в течение определенного периода времени, и это помогло.Я также хотел бы узнать больше о том, как эти даты должны использоваться, прежде чем остановиться на конкретной реализации.
Вы можете обернуть их все так, чтобы это было похоже на единую структуру данных, но под капотом они могли делать все, что захотят. Реализовав интерфейс, я смог одинаково обрабатывать каждый тип повторения, так что это выглядело как структура данных, подходящая для всех. Я мог бы запросить у любого экземпляра все даты повторения в течение определенного периода времени, и это помогло.Я также хотел бы узнать больше о том, как эти даты должны использоваться, прежде чем остановиться на конкретной реализации.
Если вы хотите на практике создать структуру данных, я бы порекомендовал хэш-таблицу (где праздники или события являются ключами с появлением новой даты в качестве значения), если есть кратность каждого появления, которое вы может хэшировать значение, которое находит раздел в связанном списке, который затем содержит список всех вхождений (это сделало бы поиск, а также вставку, выполненную в O (1)).