2014-03-05 4 views
0

몇 가지 비슷한 예가 있지만 작동하지는 않습니다. 엑셀 2013, 내가 헤더를 사용하지 않아도 사무실 365VBA를 사용하여 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"로 변경) 및 수동으로 종료 범위 (대신 lngLastRow의 "33")를 사용하여 I "런타임 오류 '5': 잘못된 프로 시저 호출 또는 인수"오류가 발생합니다.

레코더를 사용하여이 매크로를 만들었습니다. 왜 기록 된 매크로가 매크로에서 작동하지 않을지 모르겠다.

나는 ": ="을 (를) 사용하여 아무 것도 얻지 못했습니다. 나는 항상 그 문제를 해결해야만했지만,이 경우에도 그 사실을 이해할 수는 없습니다.

+0

시도'키 변경 : = 범위 ("B4 : B"& lngLastRow)을'키'로 = 워크 시트 ("URL을") 범위 (. "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는 코드가 문제를 해결했다고 말했다. 셀 # 만 편집했습니다. 일단 워크 시트 ("URL")를 활성화하면 모든 '워크 시트 ("URL"). 호출은 중복되어야합니다. 그러나 괜찮습니다. 나는 VBA가 다소 비 직관적이라고 생각한다. – DrStrangepork

관련 문제