2014-03-05 100 views
0

我有幾個類似的例子,所有的聲明都可以工作,但我的不是。 Excel的2013,Office 365的使用VBA對Excel中的一個範圍進行排序

' Sort the "URLs" worksheet after update 
Worksheets("URLs").Activate 
lngLastRow = Cells(65536, Range.Column).End(xlUp).Row 
Set Range = Worksheets("URLs").Range("A3:E" & lngLastRow) 

Worksheets("URLs").Sort.SortFields.Clear 
Worksheets("URLs").Sort.SortFields.Add Key:=Range("B4:B" & lngLastRow), _ 
    SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal 
Worksheets("URLs").Sort.SortFields.Add Key:=Range("A4:A" & lngLastRow), _ 
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
With Worksheets("URLs").Sort 
    .SetRange Range("A3:E" & lngLastRow) 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 

即使我不使用頁眉(變化幅度( 「A3」),以 「A4」)和手動使用結束範圍( 「33」,而不是lngLastRow),我得到錯誤「運行時錯誤'5':無效的過程調用或參數」。

我用記錄器創建了這個宏。我不知道爲什麼錄製的宏在宏中不起作用。

我從來沒有得到任何與「:=」的工作。我一直需要解決這個問題,但在這種情況下,我也無法弄清楚。

+0

嘗試改變'鍵:=範圍( 「B4:B」 &lngLastRow)'來'鍵:=工作表( 「網址」)範圍( 「B4:B」 &lngLastRow)'。對於'Range(「A3:E」&lngLastRow)'和'Range(「A4:E」&lngLastRow)'同樣的事情。讓我們知道它是否有幫助:) –

回答

0

試試這個:

' Sort the "URLs" worksheet after update 
Sub Macro1() 
    Worksheets("URLs").Activate 
    Dim Range As Range 
    Dim lngLastRow As Long 
    lngLastRow = Worksheets("URLs").Range("A1048576").End(xlUp).Row 
    Set Range = Worksheets("URLs").Range("A3:E" & lngLastRow) 

    Worksheets("URLs").Sort.SortFields.Clear 
    Worksheets("URLs").Sort.SortFields.Add Key:=Worksheets("URLs").Range("B4:B" & lngLastRow), _ 
     SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal 
    Worksheets("URLs").Sort.SortFields.Add Key:=Worksheets("URLs").Range("A4:A" & lngLastRow), _ 
     SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    With Worksheets("URLs").Sort 
     .SetRange Worksheets("URLs").Range("A3:E" & lngLastRow) 
     .Header = xlYes 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 
End Sub 
+0

這工作。你能解釋爲什麼嗎?我知道這不是對lngLastRow的改變。謝謝 – DrStrangepork

+0

@DrStrangepork - 基本調試將幫助解釋原因。基本上你錯誤地引用範圍/單元格。顯然,你沒有向我們展示如何聲明你的變量 - 所以我不能告訴你,如果你做了錯誤的事情 - 但我以標準方式聲明lngLastRow和Range。你似乎根本沒有使用Range變量 - 所以這可能不是必須的。 – Stepan1010

+0

我想問的原因是我將我的示例從microsoft.com支持論壇複製出來,OP說這些代碼解決了他們的問題。我只編輯了單元格#。一旦你做了工作表(「網址」),激活',所有'工作表(「網址」)。呼叫應該是多餘的。但沒關係,它很有用。我覺得VBA很不直觀。 – DrStrangepork