我有一个带有列表框的表单,该表单可动态提供当前工作簿中的工作表列表(下面的代码)。我希望将所选的工作表并在此过程中稍后的公式中进行引用。从数小时的游戏中,我似乎无法完成这项工作。我相信我读过某个地方,您不能将字符串带回子对象并使用它来引用对象。所以我想也许我可以创建两个列表框
我可以将索引号传递给我,或者可以在公式中使用该索引号从正确的工作表中查找项目。
在我的一生中,我似乎无法找到一种将两者联系起来的方法,因为这些物品将一直在变化。该代码将由多个运营商在多个工作簿上运行,因此布局很可能会在用户之间进行更改。我可以轻松地添加带有索引号的第二个列表框,但是我对如何将对用户有意义的名称和可以传递回子级的索引相关联存在一个障碍。我意识到列表框的“单击”过程将两者关联起来,但是由于字段的动态性质,我无法提出将其放入代码中的逻辑。
For N = 1 To ActiveWorkbook.Sheets.Count
With ListBox1
.AddItem ActiveWorkbook.Sheets(N).Name
End With
Next N
试试看
在用户窗体的代码上方声明一个公共变量,以使其在您的工作簿中可从任何模块或代码使用。
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
我进行了一项测试,只是为了证明结果仍然保留。您不需要它,它在屏幕截图上演示了结果。
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")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句