在 Excel 2010 中,我可以在工作表中创建 ActiveX 组合框,并将其配置为提供所有工作表的列表,并且它将激活我选择的工作表。
但是,如果我复制包含组合框的工作表,新的组合框就会失效。我必须复制所有使其工作的 VBA 代码,并相应地更改标签。
有什么方法可以设置它,以便在复制工作表时它自动工作吗?
这就是我目前正在做的事情:
Microsoft Excel 对象\ThisWorkbook:
Private Sub Workbook_Open()
' Rebuild the list of sheets for the worksheet ComboBox.
Dim i As Long
For i = 1 To ThisWorkbook.Sheets.Count
Sheet1.ComboBox1.AddItem Sheets(i).Name
Next
End Sub
Microsoft Excel 对象\Sheet1(Sheet1):
Private Sub ComboBox1_Change()
With Sheet1.ComboBox1
Sheets(.List(.ListIndex)).Activate
End With
End Sub
最佳答案
在您的工作簿模块中执行此操作:
Private Sub Workbook_Open()
Call PopulateBoxes(Sheet1)
End Sub
在标准模块中,执行以下操作:
Sub PopulateBoxes(ws As Worksheet)
Dim sht As Worksheet
'Populate the combobox on sheet 1
Dim obj
Set obj = ws.OLEObjects.Item("ComboBox1").Object
obj.Clear
For Each sht In ThisWorkbook.Worksheets
obj.AddItem sht.Name
Next
End Sub
然后,在 Sheet1 模块中,进行以下操作:
Private Sub ComboBox1_Change()
With Me.ComboBox1
Sheets(.List(.ListIndex)).Activate
End With
End Sub
Private Sub WOrksheet_Activate()
Call PopulateBoxes(Me)
End Sub
现在,即使在复制工作表之后,每个 ComboBox 的代码也应该可以正常工作。
关于vba - 在 Excel 中,如何设置 VBA ComboBox,以便在复制工作表时它仍然可以工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34662565/