Vba 如何在模块中引用形状

Vba 如何在模块中引用形状,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"

我在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

在VBA中有一种更简单的方法来实现“按钮”(我想这就是您试图实现的目标)

首先,在模块中,创建“打开工作表”代码:


然后右键单击形状,选择
Assign Macro
并将
Open_Sheet2
指定给该形状。现在,当单击它时,它将打开Sheet2

,它只执行第二个“with”
——它总是使用语句执行第一个
,然后执行第二个。这是一个正常的程序流程。你知道用
语句实际做什么吗?哦,是的,你是对的。。它将在一个流程中工作。那么,我如何在一个宏内将其分配给不同的形状呢?您能提供一个示例代码来帮助我吗?因为我对VBA非常陌生,所以我不知道大多数功能。是的,我想使用按钮,但我有10到15个这样的按钮。所以我想知道我是否可以把所有的东西都放在一个代码下。这是我个人的偏好,但我只会把所有的“开放”潜艇放在一个模块中,专门用来存放这些潜艇。那你就知道他们都在哪里了。它快速、简单,而且只在需要时调用。可见代码行做什么?我的意思是我能够在没有代码行的情况下执行工作表激活。。所以我想知道,
。Visible
确保如果工作表被隐藏,它将被取消隐藏,以确保激活工作无故障
Sub Open_Sheet2
Sheets("Sheet2").visible = True
Sheets("Sheet2").Activate
End Sub