如何解决基于 vba 值的工作表选择或如何将字符串转换为工作表数组
我正在尝试根据变量选择不同的工作表。 所有这些都是为了将这些表格打印成 pdf。
我尝试过使用数组,但我知道的不多。 所以我继续使用字符串和拆分。 但我也没有机会了。
除了最后一个代码行,工作表选择外,一切都好。 我收到下标超出范围 有什么建议吗?
Sub Print_Full_Report()
Call Clear_clipboard
Call Stop_Calcul_Screen
LastOverviewRow = WS_Rep_Overview.Cells(Rows.Count,3).End(xlUp).Row
tabtoprint = ""
SelectedDate = Date + 90
For i = 5 To LastOverviewRow
If WS_Rep_Overview.Range("E" & i) < SelectedDate Then
Module = WS_Rep_Overview.Range("D" & i).Value
tabtoprint = tabtoprint & Chr(34) & Module & Chr(34) & "," & Chr(34) & Module & "-Cow" & Chr(34) & "," & Chr(34) & Module & "-SubSys" & Chr(34) & ","
End If
Next i
tabtoprint = Mid(tabtoprint,1,Len(tabtoprint) - 1)
Sheets(Split(tabtoprint,",")).Select
End Sub
解决方法
试试这个代码:
Sub Print_Full_Report()
Const template = ",#,#-Cow,#-SubSys" ' for further use in the loop
' previous your code ...
' in the code some redundant variables have been removed
With WS_Rep_Overview
SelectedDate = Date + 90
For i = 5 To .Cells(Rows.Count,3).End(xlUp).Row
If .Range("E" & i) < SelectedDate Then
tabtoprint = tabtoprint & Replace(template,"#",.Range("D" & i).Value)
End If
Next i
End With
tabtoprint = Mid(tabtoprint,2) 'remove the leading comma
' for debug; check that it prints something like this: Module5,Module5-Cow,Module5-SubSys,Module6,Module6-Cow,Module6-SubSys,Module7,Module7-Cow,Module7-SubSys
Debug.Print tabtoprint
Worksheets(Split(tabtoprint,",")).Select
End Sub
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。