Вызов различных макросов внутри одного макроса Excel VBA

Я пытаюсь создать макрос, который ссылается на значения в диапазоне ячеек и в зависимости от этих значений в этом диапазоне, вызывает определенный макрос и меняет цвет ячейки. Например, если ячейка A2 имеет значение 100, я хочу, чтобы ячейка D2 меняла цвет своей ячейки на красный цвет и вызывала определенный макрос, как только пользователь нажимает на ячейку D2. Итак, если пользователь вводит 100 в ячейку A2, мне нужна ячейка D2, чтобы затем перейти на красный цвет, указав, что в строке должно быть добавлено больше информации, и как только пользователь помещает их курсор на ячейку D2 и щелкает ячейку D2, он переносит их на определенный макрос. Мне нужна эта функциональность для строки (A2: A446). Итак, если ячейка A25 равна 30, мне нужна ячейка D25 для красного цвета, и когда пользователь нажимает на ячейку D25, она переносит их на другой макрос (примеры являются гипотетическими). Пожалуйста помоги! Вот мой код ниже:

For Each c In Worksheets("JE").Range("D7:D446") If c.Value = "1000GP" Then Select.Cell.Interior.ColorIndex = 3 Call gotoref1 ElseIf c.Value = "1000MM" Then Call gotoref2 Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 ElseIf c.Value = "19FEST" Then Call gotoref3 Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 ElseIf c.Value = "20IEDU" Then Call gotoref4 Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 ElseIf c.Value = "20ONLC" Then Call gotoref5 Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 ElseIf c.Value = "20PART" Then Call gotoref6 Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 ElseIf c.Value = "20PRDV" Then Call gotoref7 Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 ElseIf c.Value = "20SPPR" Then Call gotoref8 Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 ElseIf c.Value = "22DANC" Then Call gotoref9 Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 ElseIf c.Value = "22LFLC" Then Call gotoref10 Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 ElseIf c.Value = "22MEDA" Then Call gotoref11 Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 ElseIf c.Value = "530CCH" Then Call gotoref12 Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 ElseIf c.Value = "60PUBL" Then Call gotoref13 Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 ElseIf c.Value = "74GA01" Then Call gotoref14 Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 ElseIf c.Value = "74GA17" Then Call gotoref15 Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 ElseIf c.Value = "74GA99" Then Call gotoref16 Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 ElseIf c.Value = "78REDV" Then Call gotoref17 Worksheets("JE").Range("F7:F446").Cells.Interior.ColorIndex = 3 End If Next c 

Итак, я думаю, что одна из ваших проблем может заключаться в том, что вы используете определенный диапазон ячеек в вашем If / Elseif. Вместо этого вы можете использовать ссылку r / c для перехода от ячейки D7 к F7 (0,2).

Что это означает, для каждого c код дает вам ссылку из c вместо того, чтобы проходить во всем диапазоне «F», который вы пытаетесь использовать.

Кроме того, вы настроены на использование VBA или хотите ли вы использовать условное форматирование, а затем разрешить «по изменению ячейки» в VBA разрешить вызов sub () , когда пользователь меняет ячейку красным?

  • Номер индекса столбца
  • Как считать прокомментированную ячейку в Excel с VBA?
  • Выполнение итогов различных параметров
  • Формула MEDIANIF с использованием месяцев
  • Если ячейка содержит значение, переместите значение другой ячейки в другую ячейку
  • Используйте ADDRESS (или аналогичный) для возврата полного адреса столбца
  • макрос пролитой ячейке от первого появления числа
  • Превосходно считать дубликат в столбце
  • Как вычесть литерал времени из значения ячейки в excel?
  • Замена чисел и символов
  • Как объединить листы Excel
  • Давайте будем гением компьютера.