因此,Cell B2是一个读取员工的下拉列表(数据验证单元)。来自另一个选项卡的名称(选项卡2,列A1:A1000),因此在人们选择不同的名称后,这些核心指标将刷新(生成这些指标的数据已经链接到数据源)。
主管将打印此记分卡并与其员工交谈。
然而,有超过数百名员工,所以我想知道是否有任何简单的方法通过VBA可以打印每个员工的下拉列表中的所有选项。我在谷歌进行了一些搜索,找不到任何有效的工作为了我。
非常感谢
答案 0 :(得分:2)
这是迭代数据验证单元格的代码。根据需要更改工作表名称和单元格引用。 您必须在for / each / next循环中添加打印代码
Sub Iterate_Through_data_Validation()
Dim dvCell As Range
Dim inputRange As Range
Dim c As Range
'Which cell has data validation
Set dvCell = Worksheets("Sheet1").Range("B1")
'Determine where validation comes from
Set inputRange = Evaluate(dvCell.Validation.Formula1)
For Each c In inputRange
dvCell = c.Value
'add some print page code here
Next c
End Sub
答案 1 :(得分:1)
如果你想遍历组合框列表:
我把它扔给你了。我没有时间去测试,但应该有效。您需要将“ComboBox1”替换为您的控件名称。您还需要将el.Name = "EmployeeList"
更改为正确的工作表名称。
Sub printEmployees()
On Error GoTo catch
Err.Clear
GoTo try
try:
Dim el, sc As Worksheet
Set sc = ActiveSheet
Set el = Sheets.Add
el.Name = "EmployeeList"
sc.Activate
i = 0
For Each lItem In Me.ComboBox1.List
el.Cells(1, i) = Me.ComboBox1.List(i)
i = i + 1
Next
el.PrintOut
finally:
On Error Resume Next
Application.DisplayAlerts = False
el.Delete
Application.DisplayAlerts = True
Set sc = Nothing
Set el = Nothing
Exit Sub
catch:
MsgBox Err.Description
Resume finally
End Sub