2016-08-02 4 views
0

단순한 수출을 열을 제거하고 정렬하는 데 노력하고 내가 오류를 받고 있어요 :문제 - 제거 및 정렬 열

Run-time error '9': Subscript out of range

나는 초 최근에 만들어진 통합 문서에 기본 매크로를 실행할 때마다.

원래 통합 문서는 6 열을했다
Sub ONCE() 
' 
' ONCE Macro 
' export and prep an ONC list 
' 
' Keyboard Shortcut: Ctrl+e 
' 
    Range("A:A,B:B,F:F").Select 
    Range("F1").Activate 
    Selection.Delete Shift:=xlToLeft 
    Columns("A:A").Select 
    Columns("A:A").EntireColumn.AutoFit 
    Columns("B:B").ColumnWidth = 8.29 
    Columns("B:B").EntireColumn.AutoFit 
    Columns("C:C").EntireColumn.AutoFit 
    Columns("C:C").Select 
    ActiveWorkbook.Worksheets("QueueDetail_20160802_150124").Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets("QueueDetail_20160802_150124").Sort.SortFields.Add _ 
     Key:=Range("C1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _ 
     :=xlSortNormal 
    With ActiveWorkbook.Worksheets("QueueDetail_20160802_150124").Sort 
     .SetRange Range("A2:C35") 
     .Header = xlNo 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 
    Range("D4").Select 
End Sub 

, 내가 매크로를 기록했던 모든 자동 (정보의 각 비트는 시각에 맞게 우는 있도록 더블 클릭) 각 열을 맞게하고 시도, 여분의 3 열을 제거했다 마지막 열 (가장 작은 것부터 가장 큰 것까지)로 통합 문서를 정렬합니다.

새 통합 문서에서 매크로를 실행하면 오류 메시지가 생성되고 마지막 열에서 정렬이 실행되지 않습니다. 여분의 기둥과 간격을 제거하는 것은 완벽하게 작동하는 것처럼 보입니다.

+0

새 통합 문서에 'QueueDetail_20160802_150124'라는 시트가 없기 때문에 – cyboashu

+0

Welcome to StackOverflow, Aquilam. 다음은 몇 가지 지침을 제공합니다. (1) [select의 사용을 피하십시오.] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba -macros) (2) [코드 완성] (http://stackoverflow.com/documentation/excel-vba/1576/common-mistakes/5110/qualifying-references#t=201608022225226090252)'ThisWorkbook.WorkSheets ("QueueDetail_20160802_150124") 열 ("A : A"). EntireColumn.AutoFit' 대신'Columns ("A : A"). (3) 셀이 선택되고 시트가 활성화됩니다 (선택되지 않음). – Ralph

+0

cyboashu, 내가 현재 열려있는 통합 문서에서 실행되도록 코드를 변경하려면 어떻게해야합니까? – Aquilam

답변

0

"QueueDetail_20160802_150124"시트를 새 책에 추가하거나 ActiveWorkbook.sheets(1).Sort.SortFields.Clear sheets (1)를 사용하면 활성 노트의 첫 번째 시트에서 작동합니다. activesheet은 현재 선택된 시트에서 작동합니다.

디버깅을 사용하면 코드가 실패한 행임을 알 수 있습니다.

+0

특정 키워드 - 단어 표제 (열 A1, B1 등의 특정 단어로)를 강조 표시하는 코드를 작성한 다음 해당 열을 삭제할 수 있습니까? 그리고 원본 통합 문서를 연결하지 않고 Excel을 영구 저장하는 방법이 있습니까? 보고서를 생성하고 초과 정보를 제거한 다음 인쇄본을 인쇄합니다. 생성 된 보고서 문서는 하드 카피가 인쇄 된 직후에 삭제됩니다. @ralph – Aquilam

+0

@ Aquilam- 나는 "Excel을 영구적으로 저장하라"는 것이 무슨 뜻인지 잘 모르겠습니다. 귀하의 요구 사항을 충족 시키려면 PDF로 문서를 저장할 수 있습니다. 특정 단어를 찾으려면 VBA에서 루프를 조사하십시오 (각 열을 반복하거나 각 시트를 반복하여 각 A1, B1 등을 볼 수 있어야합니다). cell.value가 텍스트와 일치하면 원하는 항목을 선택하는 것이 가능하지만이 사이트는 "당신을위한 코드"장소가 아닙니다. 예를 들어, 당신이 붙어있을 때 또 다른 질문을해라. 행운을 비네! :-) – ale10ander