gpt4 book ai didi

组合框中的 VBA 自动完成文本

转载 作者:行者123 更新时间:2023-12-01 05:43:28 25 4
gpt4 key购买 nike

我正在创建一个组合框,用于使用具有自动完成功能的工作表名称搜索工作表,我能够在下拉列表中获取工作簿工作表的名称但是当我输入工作表名称的几个字母时,我想显示所有工作表的建议以及我在组合框中编写的字母。

下面是到目前为止完成的代码,我可以使用它选择工作表名称并导航到该工作表。

1st - 在第一个工作表中添加一个组合框并命名(我称之为 cmbSheet)。我使用了 ActiveX 组合框(在 Excel 2007 中,在“开发人员”选项卡下)。

第二 - 打开 VBA 并将以下代码添加到工作簿代码中。每次打开工作簿时,此代码都会使用工作表名称填充组合框。

Private Sub Workbook_Open()
Dim oSheet As Excel.Worksheet
Dim oCmbBox As MSForms.ComboBox
Set oCmbBox = ActiveWorkbook.Sheets(1).cmbSheet
oCmbBox.Clear
For Each oSheet In ActiveWorkbook.Sheets
oCmbBox.AddItem oSheet.Name
Next oSheet
End Sub

3rd - 现在,我转到我的第一张工作表的代码(已添加组合框的地方)并添加将激活在组合框中选择的工作表的代码。代码是:

Private Sub cmbSheet_Change()
ActiveWorkbook.Sheets(cmbSheet.Value).Activate
End Sub

现在,当组合框值发生变化时,相应的工作表将被激活。

最佳答案

此解决方案解决了您的部分问题:动态更改工作表名称的问题。

将组合框填充过程移动到它自己的方法中。然后从 Workbook_Open 子调用方法。每次使用 VBA 过程更改工作表名称时,将行 Call RefreshList 添加到过程的末尾。

    Private Sub Workbook_Open()
Call RefreshList
End Sub

Private Sub RefreshList()
Dim oSheet As Excel.Worksheet
Dim oCmbBox As MSForms.ComboBox
Set oCmbBox = ActiveWorkbook.Sheets(1).cmbSheet
oCmbBox.Clear
For Each oSheet In ActiveWorkbook.Sheets
oCmbBox.AddItem oSheet.Name
Next oSheet
End Sub

Private Sub DynamicallyChangeSheetNames()
'Do stuff, change a sheet name
Call RefreshList
End Sub

要处理有人手动重命名工作表,请查看 https://stackoverflow.com/a/1941199/5103770以及http://www.cpearson.com/excel/RenameProblems.aspx .

关于组合框中的 VBA 自动完成文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34334024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com