День добрый!
Пишу текстовый квест на экселе :)
По ходу создания страницы с характеристиками перса возникла необходимость постоянно обрабатывать большое число кнопок, коих на всю страницу предполагается штук 300.. а то и больше
Имена кнопок в большинстве своем между собой отличаются только номером
Strength_1_null
Strength_2_null
Strength_3_null...
Например, есть кнопка, задача которой - по щелчку окрашивать все выше упомянутые в цвет фона единой для всех ячейки.
Рабочий код сейчас такого вида:
Код |
---|
Strength_1_null.BackColor = Range("D296").Interior.Color
Strength_1_null.ForeColor = Range("D296").Font.Color
Strength_1_spin.BackColor = Range("D296").Interior.Color
Strength_1_spin.ForeColor = Range("D296").Font.Color
Strength_2_null.BackColor = Range("D296").Interior.Color
Strength_2_null.ForeColor = Range("D296").Font.Color
Strength_2_spin.BackColor = Range("D296").Interior.Color
Strength_2_spin.ForeColor = Range("D296").Font.Color
Strength_3_null.BackColor = Range("D296").Interior.Color
Strength_3_null.ForeColor = Range("D296").Font.Color
Strength_3_spin.BackColor = Range("D296").Interior.Color
Strength_3_spin.ForeColor = Range("D296").Font.Color
Strength_4_null.BackColor = Range("D296").Interior.Color
Strength_4_null.ForeColor = Range("D296").Font.Color
Strength_4_spin.BackColor = Range("D296").Interior.Color
Strength_4_spin.ForeColor = Range("D296").Font.Color
Strength_5_null.BackColor = Range("D296").Interior.Color
Strength_5_null.ForeColor = Range("D296").Font.Color
Strength_5_spin.BackColor = Range("D296").Interior.Color
Strength_5_spin.ForeColor = Range("D296").Font.Color
Strength_6_null.BackColor = Range("D296").Interior.Color
Strength_6_null.ForeColor = Range("D296").Font.Color
Strength_6_spin.BackColor = Range("D296").Interior.Color
Strength_6_spin.ForeColor = Range("D296").Font.Color
Strength_7_null.BackColor = Range("D296").Interior.Color
Strength_7_null.ForeColor = Range("D296").Font.Color
Strength_7_spin.BackColor = Range("D296").Interior.Color
Strength_7_spin.ForeColor = Range("D296").Font.Color
Strength_8_null.BackColor = Range("D296").Interior.Color
Strength_8_null.ForeColor = Range("D296").Font.Color
Strength_8_spin.BackColor = Range("D296").Interior.Color
Strength_8_spin.ForeColor = Range("D296").Font.Color
Strength_9_null.BackColor = Range("D296").Interior.Color
Strength_9_null.ForeColor = Range("D296").Font.Color
Strength_9_spin.BackColor = Range("D296").Interior.Color
Strength_9_spin.ForeColor = Range("D296").Font.Color |
То есть разница между строками - только в номере в имени окрашиваемой кнопки.
Как можно решить такую задачу, например, с помощью цикла? Интересен синтаксис, попробовал вот так:
Код |
---|
For n_color = 1 To 9
ActiveSheet.Shapes("Strength_" & n_color & "_null").BackColor = Range("D296").Interior.Color
ActiveSheet.Shapes("Strength_" & n_color & "_null").ForeColor = Range("D296").Font.Color
ActiveSheet.Shapes("Strength_" & n_color & "_spin").BackColor = Range("D296").Interior.Color
ActiveSheet.Shapes("Strength_" & n_color & "_spin").ForeColor = Range("D296").Font.Color
Next n_color |
Но не работает, пишет
Object doesn't support this property or methodВопрос - как правильно вставить переменную в имя другой переменной (в конкретном случае - переменную-счетчик цикла в имя кнопки), если это возможно. Или иные пути решения задачи без копирования строки каждый раз.