仅选择与名称

时间:2018-01-25 11:21:48

标签: excel vba excel-vba

我正在处理一个宏,它将遍历文件夹中的文件,然后将所有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

正确的方法是什么?

1 个答案:

答案 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