Вызов различных макросов внутри одного макроса 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
- Формула Excel возвращает числовые значения, когда я хочу, чтобы он возвращался "-"
- AVERAGEIF после операции в формуле массива
- Можете ли вы сделать несколько вариантов для формулы = if (isnumber (search))) в excel?
- Ошибка формулы Excel:
- Написание формулы для excel для маркировки разделов времени на основе численного подсчета количества периодов времени
- Как узнать различные ячейки из двух электронных таблиц с одинаковым форматом
- Обновление листка, если другая информация на другом листе - Формула или VBA?
- Извлечь значения из столбца на основе другого кода строки функции EXcel
- Excel Эквивалент цикла for
- В каких ситуациях я не могу использовать SUMPRODUCT вместо MMULT?
- Несколько сумм в одну коробку
- Восстановление документа Excel
- Преобразование строки в продолжительность времени В Excel
Итак, я думаю, что одна из ваших проблем может заключаться в том, что вы используете определенный диапазон ячеек в вашем If / Elseif. Вместо этого вы можете использовать ссылку r / c для перехода от ячейки D7 к F7 (0,2).
Что это означает, для каждого c
код дает вам ссылку из c
вместо того, чтобы проходить во всем диапазоне «F», который вы пытаетесь использовать.
Кроме того, вы настроены на использование VBA или хотите ли вы использовать условное форматирование, а затем разрешить «по изменению ячейки» в VBA разрешить вызов sub ()
, когда пользователь меняет ячейку красным?