問題提出:實際上自己感覺用處不是很大,非得需要將工作表進行排序嗎?只要能訪問不就可以嗎?但既然提出來了,就看看吧,而且裡面有個演算法對我很有價值,就是排序演算法,以前遇到需要排序的要求,心裡就害怕,這次就藉著這個問題,把它解決吧.
sub 工作表按公升序排序()
dim i as integer, j as integer, n as integer
dim sht() as string, t as string
n = sheets.count
redim sht(1 to n) '注意陣列定義的寫法,可以直接實現從1開始啊.不用再在過程前寫option base 1了.
for i = 1 to n '將所有工作表名字逐一寫入陣列,為排序進行準備
sht(i) = sheets(i).name
next i
for i = 1 to n - 1 '按從大到小排序,即降序排列,書中寫錯了.
for j = i + 1 to n
if sht(i) < sht(j) then '如果前1個小於後1個,則將二者交換順序,這樣交換完後,大的在前,小的在後.
t = sht(i) '先參與迴圈的為1到n-1,後參與迴圈的為後1個到n,這樣就可以保證所有資料都參與排序.
sht(i) = sht(j)
sht(j) = t
end if
next j
next i
for i = 1 to n
debug.print sht(i) '此時輸出的結果即為從大到小
worksheets(sht(i)).move before:=sheets(1) '先將最大的移到第1個工作表前,再將其次的移到最前面,這樣迴圈下來,就可以實現將最小的移到最前面,恰好符合要求.
next i
end sub
這種排序的方式是逐字元進行比較,純字母的排序完全可以得到想要的結果,但如果工作表名稱中含有字母+數字或者純數字的話,恐怕得到的結果就不是自己要的.如下圖所示:
明顯的不是按數字大小排序,這也從另一方面說明上述比較方法是逐字元進行比較的,因為0的ascii碼為48在0-9中最小,所以......
如何改進呢?想辦法變成按真正的數字大小進行排序,尤其是在工作名稱是sheet1/sheet2/sheet10/sheet20......樣式時.
注意sheet44與sheet45的區別.
**反思:兩種方法都有價值,但用途不一樣.第1種適用於字母的比較;第2種適用於字母加數字的比較,而且是有規律的比較.
了解了如果更改大小寫呢?ucase和lcase函式可以實現,這是vba中的函式.
43 things: error, excel, excel vba, range, vba, 愛好者, 區分大小寫, 迴圈, 應用程式, 字串, 最大值
buzznet: error, excel, excel vba, range, vba, 愛好者, 區分大小寫, 迴圈, 應用程式, 字串, 最大值
del.icio.us: error, excel, excel vba, range, vba, 愛好者, 區分大小寫, 迴圈, 應用程式, 字串, 最大值
flickr: error, excel, excel vba, range, vba, 愛好者, 區分大小寫, 迴圈, 應用程式, 字串, 最大值
icerocket: error, excel, excel vba, range, vba, 愛好者, 區分大小寫, 迴圈, 應用程式, 字串, 最大值
livejournal: error, excel, excel vba, range, vba, 愛好者, 區分大小寫, 迴圈, 應用程式, 字串, 最大值
technorati: error, excel, excel vba, range, vba, 愛好者, 區分大小寫, 迴圈, 應用程式, 字串, 最大值
今天你菊子曰了麼?
vba 實用技巧
1.減少物件的啟用和選擇 with sheets sheet3 range a1 value 100 range a2 value 200 end with 2 在迴圈中要儘量減少物件的訪問。for k 1 to 1000 sheets sheet1 select cells k,1 value c...
VBA快速入門技巧
開發bw報表時,經常會遇到一些展示效果要求比較高的需求,這種情況下,往往需要借助excel的公式或者vba程式設計來實現。需要用到公式時,可以檢視excel幫助文件,以找到具有相應功能的公式。但是,有時僅僅利用公式不能夠滿足一些複雜的需求,則要借助vba。對於剛剛接觸vba的開發人員來說,掌握vba...
VBA程式設計規則及方法技巧
1 編寫自定義函式時,必須在vba模組中,而不是在與thisworkbook 工作表和使用者窗體關聯的 模組中。2 如果 要選中單元格區域,則該區域所在的工作表必須是活動的,可以使用activate方法來啟用某工作表。3 盡量在vba 中使用命名的單元格區域。4 當通過快捷鍵選擇單元格區域的時候,如...