У меня есть длинный VBA-скрипт с несколькими циклами for. Каждый цикл имеет оператор IF для проверки определенных критериев. В разделе THEN содержится 30 блоков команд вырезания и вставки, чтобы получить данные с 1 листа и разместить их на другом листе. После этого он записывает новую строку заголовка и переходит к следующему циклу For и IF с другими критериями. Вместо того чтобы снова иметь 30 блоков кода THEN в каждом цикле, есть ли способ, которым я могу ВЫЗВАТЬ его откуда-то еще?
Я уже пытался создать новый саб и сделать
For i = 2 To a
If Worksheets("Original Data").Cells(i, 1) <> "" THEN
CALL copyPaste
но это не сработало.
For i = 2 To a
If Worksheets("Original Data").Cells(i, 1) <> "" THEN
Worksheets("sheet1").Activate
Worksheets("sheet1").Cells(i, X).Copy
Worksheets("sheet2").Activate
Worksheets("sheet2").Cells(b + 1, 1).Select
ActiveSheet.Paste
b = b + 1
End If
Next i
Application.CutCopyMode = False
'code to insert New Header Row
(a = количество строк.)
(b - просто еще один итератор, поскольку лист 1 начинается со строки 2, а лист 2 начинается со строки 4)
Существует около 30 таких блоков для различных команд копирования и вставки. Я бы предпочел, чтобы эти 30 блоков не появлялись в сценарии более 5 раз, если я могу избежать этого.