Excel VBA用户窗体(按列表框选择激活工作表)

时间:2012-11-25 05:41:46

标签: excel excel-vba excel-2010 vba

我正在尝试使用一个函数来显示一个ListBox,它充满了每个工作表上的所有形状。对于那件事我没有任何疑问。但是当我选择一个形状来激活工作表和形状时我想要它。

//Module(Custom)
Public Function getShape(Target As Variant) As Variant
    Dim ws As Worksheet   
    Dim sh As Shape
    Dim main As MainForm
    Set main = New MainForm
    For Each ws In ActiveWorkbook.Sheets
        For Each sh In ws.shapes
            main.AddShape sh, ws
        Next sh
    Next ws
    main.Show
End Function

//For MainForm
Dim shape_collection As Collection
Dim sheet_collection As Collection
Dim cnt As Integer

Private Sub ListBox1_Click()
    If ListBox1.ListIndex = -1 Then Exit Sub
    Dim ws As Worksheet
    Dim sh As Shape
    Set ws = sheet_collection.item(ListBox1.ListIndex + 1)
    Set sh = shape_collection.item(ListBox1.ListIndex + 1)
    Worksheets(ws.Name).Activate
    Worksheets(ws.Name).Select
    Worksheets(ws.Name).Visible = True
    sh.Select
End Sub

Private Sub UserForm_Initialize()
    Set shape_collection = New Collection
    Set sheet_collection = New Collection
End Sub

Public Sub AddShape(sh As Shape, ws As Worksheet)
    ListBox1.AddItem (sh.Name)
    shape_collection.Add sh
    sheet_collection.Add ws
End Sub

0 个答案:

没有答案