2016-05-19 5 views
0

Я новичок в VBA, и у меня есть лист, который имеет макросы VBA для фигур. Он отлично работает на одном листе, но когда я копирую и вставляю фигуры на следующем листе или создаю новую фигуру и назначаю тот же макрос, он не работает. Пожалуйста, помогите мне. Ниже приведен код.Как запустить макросы VBA во всех листах

ActiveSheet.Shapes("CTSnext").Fill.ForeColor.SchemeColor = Black 

Благодарим за отзыв!

Однако позвольте мне объяснить эту проблему.

В листе 1 У меня есть 4 формы именованной 1) Отмена службы 2) Следующий 3) Не интересует 4) Сброс

И все 3 форм (2,3,4) будет в ForeColor как белый, поэтому он будет невидим. Когда пользователь нажимает кнопку «Отмена службы», появится «Далее» (значение цвета будет изменено на черный). И когда будет нажата кнопка «Далее», появится «Не интересуется» (это означает, что передний цвет изменится на черный). И когда пользователь нажимает на «Сброс», оба «Далее» & «Не заинтересованы» превратятся в невидимые (означает, что передний цвет изменится на белый). До сих пор все работает нормально.

Теперь я хочу иметь форму в Листе 2, где говорится «Сброс». Поэтому, когда пользователь нажимает на нее, должна выполняться одна и та же функция (значение VBA кнопки «Сброс» в Листе 1).

Ниже приведены коды.

Для Отменить ActiveSheet.Shapes ("Next"). Fill.ForeColor.SchemeColor = Black

For Next ActiveSheet.Shapes ("Notinterested"). Fill.ForeColor.SchemeColor = Black

Для сброса ActiveSheet.Shapes ("Next"). Fill.ForeColor.SchemeColor = 1 ActiveSheet.Shapes ("Notinterested"). Fill.ForeColor.SchemeColor = 1

Я надеюсь, что я сделал себе ясно, и я не Не знаю, как прикрепить файл excel к этой странице, чтобы он будет полезно всем вам понять мою потребность.

Спасибо заранее.

ответ

1

Ваша строка кода относится к одной определенной именованной форме (CTSnext). Вы заменяете это по номеру формы, если у вас есть только один на листе Shapes(0).
Если у вас есть несколько фигур на текущем листе, и вы хотите, чтобы макрос бегать по всей форме, вы можете использовать цикл как

for each shp in ActiveSheet.Shapes 
    shp.Fill.ForeColor.SchemeColor = Black 
Next shp 
0

Исходя из ответа iDevlop к проходному каждому рабочему листу, а также каждой форма ,

Dim wks as Worksheet 
For Each wks in Me.Worksheets 
    For Each shp in wks.Shapes 
     shp.Fill.ForeColor.SchemeColor = Black 
    Next shp 
Next wks