感谢您的回复!
然而,您发送的代码从工作簿的开头开始。但它不应该。
例如,工作簿包含工作表(只有用户知道工作表名称,因此我们无法在代码上提供工作表名称),如下所示
概要/版本/ AA / BB / CC / DD /最终
如果beginheet = AA,那么代码应该开始从AA收集数据,如果endsheet = DD则代码应该停止在Final收集数据。只有DD有效。
那么我们怎样才能做到这一点。
答案 0 :(得分:0)
你可以做一个FOR - EACH:For each theSheets in ActiveWorkbook.Sheets
For each theSheets in ActiveWorkbook.Sheets
Sheets(theSheets.Name).Select
msgbox(theSheets.Name)
next
我只是将MSGBOX用于显示工作表的名称。此外,选择是没有必要我把它放在那里只是为了显示它从一张纸到另一张是如何变化的。
如果您不想搜索所有工作表(每张工作表)但需要搜索指定数量的工作表,则可以将工作表名称分配给集合并迭代该集合;在这种情况下,你必须知道床单的名称。
答案 1 :(得分:0)
当您打开工作簿时,使用表格的名称创建CheckBoxes:
Private Sub Workbook_Open()
Dim row As Integer
row = 14
For Each mysheets In ActiveWorkbook.Sheets
ActiveSheet.CheckBoxes.Add(20, row, 50, 20).Select
With Selection
.Caption = mysheets.Name
.Value = xlOff
.LinkedCell = "C" & ToRow
.Display3DShading = False
End With
row = row + 50
Next
End Sub
让用户选择适用的表格。
使用所选CheckBoxes的“文本”填充一个集合(这将是工作表的名称)
遍历集合中的工作表
将allSelectedSheets昏暗为新集合 Public Sub FindSelectedCkBox()
For Each ckbox In ActiveSheet.CheckBoxes
If ckbox.Value > 0 Then
allSelectedSheets.Add ckbox.Text
End If
Next
iterateThroughSheets
End Sub
Sub iterateThroughSheets() 对于每个theSheets in allSelectedSheets ActiveWorkbook.Sheets(theSheets)。选择 下一个 End Sub
确保在打开图书时删除CheckBox,这样就不会有重复项。