我正在处理一个宏,它将遍历文件夹中的文件,然后将所有excel文件中的工作表复制到运行宏的工作簿。
这部分作为魅力,我想要做的是选择和复制与确切名称匹配的表格。
For Each wksCurSheet In wbkSrcBook.Sheets
'I reckon I should add some if statement in here
countSheets = countSheets + 1
wksCurSheet.Copy after:=wbkCurBook.Sheets(wbkCurBook.Sheets.Count)
Next
老实说,我不知道如何写这个陈述,我发现的例子很混乱,当我自己尝试一些东西时,我会遇到奇怪的错误。
If (wksCurSheet.Name == "AO-SC") Then
If (wksCurSheet.Name as String == "AO-SC") Then
If (wksCurSheet.("AO-SC")) Then
正确的方法是什么?
答案 0 :(得分:2)
这是通过循环获取特定工作表的方法:
For Each wksCurSheet In wbkSrcBook.Worksheets
If wksCurSheet.Name = "AO-SC" Then
'Do something
End If
Next
这是如何将它与两个工作表一起使用:
If wksCurSheet.Name = "AO-SC" Or wksCurSheet.Name = "SomethingElse" Then
如果您感兴趣的工作表保存在数组中,您可以使用自定义函数valueInArray
,检查工作表的名称是否是预定义数组的一部分:
Public Function valueInArray(myValue As Variant, myArray As Variant) As Boolean
Dim cnt As Long
For cnt = LBound(myArray) To UBound(myArray)
If CStr(myValue) = CStr(myArray(cnt)) Then
valueInArray = True
Exit Function
End If
Next cnt
End Function
这是如何使用它:
predefinedArrayWithNames = Array("Sheet1", "Sheet2","Sheet3")
If valueInArray(wksCurSheet.Name, predefinedArrayWithNames) Then