2017-08-17 194 views
0

这肯定是要求的,但我不确定这些答案是如何适用于我的问题,所以它仍然没有解决。当我点击某个电子表格并且能够做到这一点之前,我正在调用某些代码,直到我添加了第四个新代码。现在当我点击工作表2,工作表下面的代码时,它突出显示了Sub Worksheet_Activate()并显示了属性的无效使用。VBA错误无效使用属性

Sub Worksheet_Activate() 

Call VBAProject.Module1.ComplexCopyPust 
Call VBAProject.Module2.ComplexCopyPust 
Call SetPrintArea 
Call Sort 

End Sub 

我只添加了呼叫排序。它预先与所有其他代码一起工作。

调用以下的排序代码。我用记录宏创建它。

Sub Sort() 
' 
' SortNumberLetter Macro 
' 

On Error Resume Next 
'Finds last row of content 
    ALastFundRow = Columns("C").Find("*", SearchDirection:=xlPrevious, 
    SearchOrder:=xlByRows, LookIn:=xlValues).Row 


    ' 
On Error Resume Next 
Range("A8:Q" & ALastFundRow).Select 
ActiveWindow.SmallScroll Down:=-462 
ActiveWorkbook.Worksheets("WIRE SCHEDULE").Sort.SortFields.Clear 
ActiveWorkbook.Worksheets("WIRE SCHEDULE").Sort.SortFields.Add Key:=Range(_ 
    "A8:A" & ALastFundRow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ 
    xlSortTextAsNumbers 
ActiveWorkbook.Worksheets("WIRE SCHEDULE").Sort.SortFields.Add Key:=Range(_ 
    "C8:C" & ALastFundRow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ 
    xlSortNormal 
With ActiveWorkbook.Worksheets("WIRE SCHEDULE").Sort 
    .SetRange Range("A8:Q" & ALastFundRow) 
    .Header = xlGuess 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 
End Sub 

任何帮助!

+2

步骤1在调试中:摆脱“On Error Resume Next”。你不应该把它当作'On Error Hide Bug'(这是你如何使用它)。在VBA编程中确实是一个坏习惯。不要沉默错误 - *处理*他们。 –

+0

@JohnColeman我只包括这个,因为有时候我们用它作为模板时表单会空白。每当我们打开一本新的工作手册开始工作时,不得不点击忽略它。但是在编写新代码时我会注意到。我对此很新,所以我试图尽可能地坚持下去。 –

+1

如果Range.Find没有找到任何内容,则返回'Nothing' - 这会使链接的'.Row'调用失败并显示运行时错误91,您可以非常轻松地避免该错误,而不是忽略它,高兴地继续执行。经验法则,如果你输入'On Error Resume Next',你就会犯错。 –

回答

0

您需要或者有资格Sort模块名,这是在(如VBAProject.Module1.Sort),或不使用Sort作为子程序的名称(因为VBA与代码是纸张的Sort财产混淆它有关联)。

我会强烈建议更改子程序的名称。 (也许将子程​​序名称从Sort更改为SortNumberLetter。)

+0

这工作。谢谢! –

相关问题