2016-08-02 42 views
0

試圖刪除列,對簡單的出口,我得到一個錯誤:麻煩與基本的宏 - 移除和排序列

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

每次我在第二最近創建的工作簿中運行的基本的宏時間

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 

原始工作簿有6列,我所做的錄製宏是刪除多餘的列3,自動調整每列(雙擊,使每一個信息位婁適合視覺),然後再嘗試按最後一列(從小到大)對工作簿進行排序。

在新工作簿上運行宏時,會生成錯誤消息,並且排序不會在最後一列上運行。然而,除去多餘的色譜柱和間距似乎完美無缺。

+0

因爲在您的新工作簿中,您沒有任何名爲'QueueDetail_20160802_150124'的工作表 – cyboashu

+0

歡迎來到StackOverflow,Aquilam。這裏有幾點讓你開始:(1)[儘量避免使用select](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba (2)[完全限定你的代碼](http://stackoverflow.com/documentation/excel-vba/1576/common-mistakes/5110/qualifying-references#t=201608022225226090252)並寫下'ThisWorkbook.WorkSheets( 「QueueDetail_20160802_150124」)。列(「A:A」)。EntireColumn.AutoFit而不是僅僅是列(「A:A」)。EntireColumn.AutoFit'。 (3)單元格被選中並且圖紙被激活(未被選擇)。 – Ralph

+0

Categoriesashu,如何更改代碼以在當前打開的工作簿中運行? – Aquilam

回答

0

頁「QueueDetail_20160802_150124」添加到你的新書,或者使用ActiveWorkbook.sheets(1).Sort.SortFields.Clear 紙板(1)將在活動筆記本的第一頁上工作; activesheet將在當前選定的工作表上工作。

如果您使用調試,您可以看到這是您的代碼失敗的行。

+0

有沒有辦法編寫代碼來突出顯示帶有特定關鍵詞標題的列(通過列A1,B1等中的特定詞),然後刪除這些列? 而且,有沒有一種方法可以將其永久保存爲excel而無需將原始工作簿與之關聯? 我正在生成報告,刪除多餘的信息,然後打印硬拷貝。生成的報告文檔在打印硬拷貝後不久即被刪除。 @ralph – Aquilam

+0

@ Aquilam-我不確定你的意思是「永久保存到excel」。如果能夠滿足您的要求,您可以將文檔保存爲PDF。 至於尋找一個特定的詞,看看在VBA中循環(你應該能夠遍歷每一列,或在每張表,並看看每個A1,B1等。如果cell.value匹配文本,你是你可以使用Columns(2).Select或.entirecolumn.select來選擇它 絕對有可能做你想做的事,但這個網站不是一個「代碼給你」的地方,試試一個例子,當你遇到困難時問另一個問題,祝你好運!:-) – ale10ander