VBA - Несколько циклов FOR с разными операторами IF. Есть ли способ использовать одни и те же команды THEN вместо того, чтобы переписывать их в каждом разделе? - PullRequest
0 голосов
/ 06 мая 2019

У меня есть длинный 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 раз, если я могу избежать этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...