下标超出范围 – Excel

我在第9行得到了“下标超出范围”的错误。我不是程序员,也不是自称的。 出于这个原因,我需要一点帮助,让我的Excelbutton工作。 我只知道一点VB。 我不知所措,因为button将执行macros到某一点,然后我得到这个错误…

------Line 9:ActiveWorkbook.Worksheets("strActiveWorksheet").Sort.SortFields.Clear----- 

这里是代码:

 ' ' MakeParetoTable Macro ' Dim strActiveWorkSheet As String Sub MakeParetoTable() strActiveWorkSheet = ActiveSheet.Name Range("B6:B31,I6:I31").Select Range("Table2[[#Headers],[Total Quanity]]").Activate Selection.Copy Range("P6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Columns("P:P").EntireColumn.AutoFit ActiveWindow.ScrollColumn = 2 Application.CutCopyMode = False ActiveWorkbook.Worksheets("strActiveWorksheet").Sort.SortFields.Clear ActiveWorkbook.Worksheets("strActiveWorksheet").Sort.SortFields.Add Key:=Range("Q7:Q31"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("strActiveWorksheet").Sort .SetRange Range("P6:Q31") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With Application.WindowState = xlMinimized Application.WindowState = xlNormal Range("Q32").Select ActiveCell.FormulaR1C1 = "=SUM(R[-25]C:R[-1]C)" Range("Q33").Select ActiveWindow.SmallScroll ToRight:=1 Range("R7").Select ActiveCell.FormulaR1C1 = "=RC[-1]/R32C17" Range("R7").Select Selection.AutoFill Destination:=Range("R7:R31"), Type:=xlFillDefault Range("R7:R31").Select Range("S7").Select ActiveCell.FormulaR1C1 = "=RC[-1]" Range("S8").Select ActiveCell.FormulaR1C1 = "=R[-1]C+RC[-1]" Range("S8").Select Selection.AutoFill Destination:=Range("S8:S31"), Type:=xlFillDefault Range("S8:S31").Select End Sub 

我怀疑你拼错了"Quanity" – 应该是"Quantity" 。 因此,该元素没有被发现,并被认为是“超出范围”。

刚刚看到了编辑。 你有一个名为strActiveWorksheet的variables,但是你正在寻找名字为"strActiveWorksheet"的工作表。 您需要删除引号:

 ActiveWorkbook.Worksheets(strActiveWorksheet).Sort.SortFields.Clear 

在下一行中也是如此,可能还有其他地方在你的代码中。 只是为了解释(因为你说你是VBA中的一个新手):

"hello"是一个string(常量)。 您可以将一个string分配给一个variables

 Dim goodbye goodbye = "hello" MsgBox goodbye 

会显示“你好”

 MsgBox "goodbye" 

会显示“再见”。

合理?