VBA列表框按索引select工作表
我有一个带有列表框的表单,它dynamic地提供当前工作簿(下面的代码)中的工作表列表。 我希望在选定的工作表中参考,并在稍后的公式中参考它。 从几个小时的玩耍,我似乎无法完成这一点。 我相信我读过的地方,你不能把string回到子,并使用它来引用一个对象。 所以我想也许我可以创build两个列表框
- 为表名称
- 为图表索引
我可以通过索引号,并可能在我的公式中使用它来查找正确的工作表中的项目。
对于我的生活,我似乎无法find一种连接两者的方式,因为这些项目总是在变化。 该代码将由多个运营商在多个工作簿上运行,因此布局很可能会在用户之间发生变化。 我可以很容易地添加索引#的第二个列表框,但我有一个关于如何将名称,将有意义的用户和我可以传回给子索引块。 我意识到列表框中的“点击”过程将两者联系起来,但是与字段的dynamic特性相关,我不能拿出把它放到代码中的逻辑。
For N = 1 To ActiveWorkbook.Sheets.Count With ListBox1 .AddItem ActiveWorkbook.Sheets(N).Name End With Next N
试试这个。
在UserForm的代码上面声明一个公共variables,使其可以在任何模块或代码的整个工作簿中使用。
Public listChoice As String
使用您的代码获取ListBox行源的图纸名称。
Private Sub UserForm_Activate() For n = 1 To ActiveWorkbook.Sheets.count With ListBox1 .AddItem ActiveWorkbook.Sheets(n).name End With Next n End Sub
包含ListBox的更新事件
Private Sub ListBox1_AfterUpdate() listChoice = ListBox1.Text End Sub
我包括一个testing只是为了certificate结果仍然保留。 你不需要这个,它会在屏幕截图上显示结果。
Private Sub cmdTestChoice_Click() MsgBox ("The choice made on the ListBox was: " & listChoice) End Sub
编辑:稍后要访问该表,你可以使用这样的东西来调用它:
访问单元格的一些示例,使用.Range或.Cells,数字或字母。
使用lRow&lCol Long来设置行号和列号。
Sheets(listChoice).Cells(lRow, lCol).Value = TextBox1.Value 'Set cell on sheet from TextBox TextBox2.Value = Sheets(listChoice).Range("A2").Value 'Set TextBox From Cell on Sheet 'Set a cell on another sheet using the selected sheet as a source. Sheets("AnotherSheet").Cells(lRow, "D") = Sheets(listChoice).Range("D2")