2016-07-05 3 views
0

매크로가 실행될 때마다 다양한 위치에있는 열을 주문하고 싶습니다.VBA에서 다양한 칼럼을 주문하는 방법은 무엇입니까?

Range(ActiveCell, ActiveCell.Offset(1000, 1)).Select 
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range(ActiveCell), _ 
     SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    With ActiveWorkbook.Worksheets("Sheet1").Sort 
     .SetRange Range(ActiveCell, ActiveCell(1000, 1)) 
     .Header = xlNo 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 

1000 상쇄 이유는 내가 열에있을 것입니다 얼마나 많은 항목을 알 수 없다는 것입니다,하지만 난 그게 1000 미만 알고 .. : 다음 작업을 완료하기위한 내 현재 코드는 (1 열 오프셋에있는) 숫자 값과 다른 열에있는 회사 이름 식별자를 정렬하려면 1 씩 오프셋합니다. 코드를 수정하는 방법을 모르지만 디버깅 할 때 실행하려고하면 오류가 발생합니다.

ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range(ActiveCell), _ 
     SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 

아이디어가 있으십니까?

+0

읽을 거리 [this] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) 도움이됩니다. 코드가 덜 버그가 될 수 있습니다. – Kyle

+0

또한 얻을 수있는 오류 메시지를 제공하십시오 – arcadeprecinct

+0

"런타임 오류 '1004': 응용 프로그램 정의 또는 개체 정의 오류" –

답변

3

Range(ActiveCell)ActiveCell은 범위 자체이기 때문에 작동하지 않습니다. 따라서 Range(ActiveCell) 대신 ActiveCell을 사용하십시오. 더 나은 아직 카일이 제안한대로 Active....Select을 피하십시오.

관련 문제