2017-07-03 50 views
0

我有一個電子表格與我們發送這些excel文件的excel處理器中的宏不協作。讓它起作用的唯一方法是隻將值複製到新的電子表格中,然後手動調整日期格式。只有在這些新的電子表格中,我才能通過Excel處理器發送它,而不會打嗝。「範圍分類失敗的排序方法」 - 錯誤

當試圖通過發送excel文件時,我得到「範圍類失敗的排序方法」。我對VB並不熟悉,所以我希望有人可以看看這些裸露的Excel表單數據並告訴我問題存在的地方。

下面是電子表格前幾個條目的屏幕截圖。

enter image description here

更新:

在調試錯誤,停止編譯器在以下行:

Columns("A:H").Sort key1:=Range("H2"), order1:=xlAscending, Header:=xlYes 

下面是隻有這部分的完整代碼:

'Sort the rows based on the data in column C 
Range("H1") = "Index" 
Columns("A:H").Sort key1:=Range("H2"), order1:=xlAscending, Header:=xlYes 
Application.ScreenUpdating = True 
'Add big formula 
Range("I2:I" & DataWBLRow) = BigConcat 
Range("J2:J" & DataWBLRow) = FormString3 
+0

硬無需看到VBA代碼即可告知。 – MacroMarc

+0

@MacroMarc說什麼 - 我們需要使用代碼來查看失敗的原因和原因。你提到日期格式。在上面的表格中,最有可能不是實際的日期被存儲,而是字符串,或者相反:你的「處理器」檢查字符串的排序而不是實際的日期。 只要'.Sort'方法按實際值(而不是顯示的文本)排序,它本身的日期格式應該沒有關係。 –

+0

@RikSportel請檢查我更新的帖子 –

回答

3

發生該問題是因爲在表格中,您嘗試對數據進行排序的表格是所謂的ListObject。從您的示例圖片中,這一點也很清楚。

這也是爲什麼當您將這些值複製粘貼到另一個常規WorkSheet時,代碼可以正常工作。

簡而言之:如果更改VBA不是您的選擇,請擺脫表格格式。否則,你就必須測試,如果排序的範圍是部分ListObject與否,如果是這樣,那麼修改代碼,以便它在ListObject.Range

實例排序:

Sub SortCols() 
Dim ws As Worksheet 
Dim lo As ListObject 

Set ws = Worksheets("Sheet1") 
Set lo = ws.ListObjects(1) 'My Table is range A1:H10 

lo.Range.Sort key1:=Range("H2") 'Works perfectly 
ws.Columns("A:H").Sort key1:=Range("H2"), order1:=xlAscending, Header:=xlYes 'Error as described in question. 

End Sub 
相關問題