Board logo

標題: Sorting程式碼不能執行 [打印本頁]

作者: stevenliu555    時間: 2013-12-22 21:40     標題: Sorting程式碼不能執行

您好:

有關sorting,想請教如下程序,為什麼不能執行?左看右看就是看不出有誤?請前輩指導解惑。檔案如附。

Sub SortData()
    Range("A1").Sort Key1:=Cells(1, 4), Order1:=xlAscending, Key2:=Cells(1, 6), Order2:=xlAscending, Header:=xlYes
End Sub

stevenliu[attach]17096[/attach]
作者: owen06    時間: 2013-12-23 09:23

回復 1# stevenliu555

我在執行上沒有任何問題耶,你是不是因為執行過一次,排序完成後,再按就沒有反應,以為不行了?
你可以再新增一個遞減排序的,就可以確定是不是一切正常了。
OrderX:=xlAscending---遞增排序
OrderX:=xldescending--遞減排序
作者: c_c_lai    時間: 2013-12-23 09:59

回復 2# owen06
[attach]17097[/attach]
作者: owen06    時間: 2013-12-23 12:37

回復 3# c_c_lai


這就怪了,我在2003上執行這個檔案是正常的,會先按照性別遞增排序, 然後再將同性別下的年齡遞增排序。
作者: c_c_lai    時間: 2013-12-23 13:28

回復 4# owen06
這種相容性問題是非常令人困擾的,有些在2003能執行的未必相容於 2007、2010。
作者: stevenliu555    時間: 2013-12-23 15:42

我的EXCEL是2007,執行結果與c_c_lai一樣,如果要用於EXCEL2007,請問該如何更改?謝謝。
作者: owen06    時間: 2013-12-23 15:56

回復 6# stevenliu555


你可以先直接用錄製的功能讓他幫你寫好內容,然後再自己去把多餘的累贅刪掉,這樣比較不會有相容性的問題。
作者: GBKEE    時間: 2013-12-23 16:42

回復 6# stevenliu555
試試看,是否可行(我沒有2007)
  1. Sub SortData()
  2.     Range("A1").Sort Key1:=Range("D1"), Order1:=xlAscending, Key2:=Range("F1"), Order2:=xlAscending, Header:=xlYes
  3. End Sub
複製代碼

作者: c_c_lai    時間: 2013-12-23 17:05

回復 8# GBKEE
Same Error as shown on 3#.
作者: owen06    時間: 2013-12-23 23:40

回復 6# stevenliu555

我剛用2007錄製出來,再一個一個慢慢刪,最精簡似乎就一定要這樣了,再簡下去就不能執行了,還挺麻煩的@@
  1. Sub sortdata()
  2. Sheets("會員名冊").Sort.SortFields.Clear
  3. Sheets("會員名冊").Sort.SortFields.Add Key:=Range("D2"), Order:=xlAscending        '先以D2遞增排序
  4. Sheets("會員名冊").Sort.SortFields.Add Key:=Range("F2"), Order:=xlAscending         '再以F2遞增排序
  5.    With Sheets("會員名冊").Sort
  6.      .SetRange Range("A1:J31")
  7.      .Header = xlYes
  8.      .Apply
  9.     End With
  10. End Sub
複製代碼

作者: c_c_lai    時間: 2013-12-24 08:22

回復 6# stevenliu555
回復 10# owen06
的確在 2003 與 2007、2010 上表達是有些微的差異性,
多謝 owen06 大大的用心!
  1. Sub Ex()
  2.     With Sheets("會員名冊").Sort
  3.         .SortFields.Clear
  4.         .SetRange Range("A1:J31")
  5.         .SortFields.Add Key:=Range("D2"), Order:=xlAscending        '先以D2遞增排序
  6.         .SortFields.Add Key:=Range("F2"), Order:=xlAscending        '先以F2遞增排序
  7.         .Header = xlYes
  8.         .Apply
  9.     End With
  10. End Sub
複製代碼

作者: stevenliu555    時間: 2013-12-24 21:00

感謝10#, 11#的教導,真的可以耶。
但是,我還是有點質疑,為什麼EXCEL 2007、2010程式碼會變得複雜,反而難用,不解。
作者: owen06    時間: 2013-12-24 22:28

回復 12# stevenliu555


   可能是對於一般使用者來說,在滑鼠操作的介面功能變的超強大,超簡便,
   但是相對的,程式語言也就變的更複雜了。猜的啦…




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)