#vba #excel
#vba #excel
Вопрос:
Я создал разные фигуры в Excel и назначил им макрос, который функционирует как активация другого листа. Я хочу поместить все это в один макрос, а затем назначить его разным фигурам с разным свойством связывания. Но этот код не работает, потому что, очевидно, я делаю что-то глупое. Может кто-нибудь, пожалуйста, помочь?
Dim shp As ShapeRange, ws As Sheets, i As Integer
Set ws = ActiveWorkbook.Sheets(Array("Introduction", "S1 Fuel Consumption", "S1 Fugitive", "S2 Electricity Consumption"))
Set shp = ws(2).Shapes.Range(Array("Chevron1", "Chevron2"))
Select Case shp(i)
Case shp(1)
ws(1).Activate
Case shp(2)
ws(3).Activate
End Select
End Sub
Комментарии:
1.
It just executes the second "with"
— он всегда выполняет первыйwith
оператор, а после этого — второй. Это обычный программный поток. Вы понимаетеwith
, что делает оператор на самом деле?2. О, да, вы правы.. Это будет работать в потоке. Тогда как я могу назначить его разным фигурам, но в пределах одного макроса?
3. Можете ли вы помочь мне, предоставив пример кода? Потому что я очень новичок в VBA, поэтому я не знаю большинства функций
Ответ №1:
В VBA есть гораздо более простой способ сделать «кнопки» (я предполагаю, что это то, чего вы пытаетесь достичь)
Прежде всего, в модуле создайте код «Open Worksheet»:
Sub Open_Sheet2
Sheets("Sheet2").visible = True
Sheets("Sheet2").Activate
End Sub
Затем щелкните правой кнопкой мыши свою фигуру, выберите Assign Macro
и назначьте Open_Sheet2
этой фигуре. Теперь при нажатии на него откроется Лист2
Комментарии:
1. Эй, да, я хочу работать с кнопками, но у меня есть от 10 до 15 таких кнопок. Итак, мне было интересно, могу ли я просто поместить все в один код.
2. Это личное предпочтение, но я бы просто использовал все «Открытые» модули в модуле, предназначенные для хранения только этих модулей. Тогда вы знаете, где они все находятся. Это быстро, просто, и вы вызываете его только тогда, когда вам это нужно
3. Что делает строка кода .visible ? Я имею в виду, что я могу выполнить активацию листа без этой строки кода.. Итак, мне было интересно..
4.
. Visible
Гарантирует, что если лист скрыт, он не будет скрыт, чтобы гарантировать, что активация работает без сбоев