运行时错误9-脚本超出范围

时间:2018-07-29 22:04:49

标签: excel vba excel-vba

我正在创建一个宏,该宏应该根据其中包含所有数据的一个工作表来分离并添加新的工作表。

它不会运行,我不确定为什么。

我的代码不断出现运行时错误'9':脚本超出范围。我不确定这是否与第一子或第二子有关。

错误发生在第16行

  

设置wsMain = wbMain.Sheets(“ MAIN”)

第一子

Option Explicit

Sub main()
Dim wbMain                      As Workbook
Dim wsMain                      As Worksheet
Dim rngMain                     As Range
Dim RngCategoryOne              As Range
Dim RngCategoryTwo              As Range
Dim RngCategoryThree            As Range
Dim RngCategoryFour             As Range
Dim RngCategoryFive             As Range
Dim RngCategorySix               As Range
Dim rng                         As Range
Dim SheetNames                  As Variant
Dim str                         As Variant

Set wbMain = ActiveWorkbook
Set wsMain = wbMain.Sheets("MAIN")
Set rngMain = wsMain.Range("F2:F3000")

For Each rng In rngMain
Select Case rng
    Case "HO NMX_AMO", "HO NMX_EUR", "WTI NMX", "DIESEL OHR EIA_AMO"
        If RngCategoryOne Is Nothing Then
            Set RngCategoryOne = rng
        Else
            Set RngCategoryOne = Union(rng, RngCategoryOne)
        End If
    Case "WTI NMX_AMO"
        If RngCategoryTwo Is Nothing Then
            Set RngCategoryTwo = rng
        Else
            Set RngCategoryTwo = Union(rng, RngCategoryTwo)
        End If
    Case "NG HH NMX"
        If RngCategoryThree Is Nothing Then
            Set RngCategoryThree = rng
        Else
            Set RngCategoryThree = Union(rng, RngCategoryThree)
        End If
    Case "RBOB NMX_EUR", "RBOB NMX_AMO"
        If RngCategoryFour Is Nothing Then
            Set RngCategoryFour = rng
        Else
            Set RngCategoryFour = Union(rng, RngCategoryFour)
        End If
    Case "GO ICE_AMO"
        If RngCategoryFive Is Nothing Then
            Set RngCategoryFive = rng
        Else
            Set RngCategoryFive = Union(rng, RngCategoryFive)
        End If
    Case "C3 CONW INW OPIS_APO, C3 MBEL TET OPIS_APO"
        If RngCategorySix Is Nothing Then
            Set RngCategorySix = rng
        Else
            Set RngCategorySix = Union(rng, RngCategorySix)

SheetNames = Array("AT, LB, LC, AS", "AO", "LN", "RF, RA", "ULA2", "8K, BO")

For Each str In SheetNames
    Call AddNewWorksheet(wbMain, str)
Next str

 wbMain.Sheets("AT, LB, LC, AS").Range("A1:A" & RngCategoryOne.Count) = RngCategoryOne.Value
 wbMain.Sheets("AO").Range("A1:A" & RngCategoryTwo.Count) = RngCategoryTwo.Value
 wbMain.Sheets("LN").Range("A1:A" & RngCategoryThree.Count) = RngCategoryThree.Value
 wbMain.Sheets("RF, RA").Range("A1:A" & RngCategoryFour.Count) = RngCategoryFour.Value
 wbMain.Sheets("ULA2").Range("A1:A" & RngCategoryFive.Count) = RngCategoryFive.Value
 wbMain.Sheets("8K, BO").Range("A1:A" & RngCategorySix.Count) = RngCategorySix.Value

  wsMain.Activate
  wsMain.Range("A1").Select
 End If
 End Select
Next
End Sub

第二子:

Sub AddNewWorksheet(ByRef wb As Workbook, ByVal wsName As Variant)
 With wb.Sheets
    .Add(after:=wb.Sheets(.Count)).Name = wsName
 End With
End Sub

0 个答案:

没有答案