5.5.5-代码解析:sub_数据库排序¶
本Sub过程是对数据库中已经录入的数据按照时间先后进行重新排序,为什么需要这样一步呢?因为样本的测量时间来自于被解读的TXT和Excel文件名称,如何5-18所示。遍历文件的顺序不是按照文件的名称顺序来解读的,具体的顺序应该和放入文件的时间相关,这个没有深入研究过。但下一步预警的时候,是需要对最新生产的5个零件进行比对,所有生产时间很重要,所以增加了一步按照生产时间进行排序,其实也就是按照第1行进行排序。
代码如下
1 Sub sub_数据库排序()
2 ' 数据库文件
3 currentPath = ThisWorkbook.Path
4 dbExcel = currentPath & "\数据库.xlsx"
5 Set wb = Workbooks.Open(dbExcel)
6 Set shtDB = wb.Worksheets(1)
7 maxCol = shtDB.Cells(1, Columns.Count).End(xlToLeft).Column
8 maxRow = shtDB.Cells(Rows.Count, "A").End(xlUp).Row
9
10 Set rngSort = Range(shtDB.Range("D1"), shtDB.Cells(maxRow, maxCol))
11 Set rngSortRow = Range(shtDB.Range("D1"), shtDB.Cells(1, maxCol))
12
13 shtDB.Sort.SortFields.Clear
14 shtDB.Sort.SortFields.Add Key:=rngSortRow, _
15 SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
16
17 With shtDB.Sort
18 .SetRange rngSort
19 .Header = xlNo
20 .MatchCase = False
21 .Orientation = xlLeftToRight
22 .SortMethod = xlPinYin
23 .Apply
24 End With
25
26 wb.Save
27 wb.Close
28 End Sub
关键代码解读
1)第14行:Key:=rngSortRow。设置排序的依据区域
2)第18行:.SetRange rngSort。设置排序的区域
3)第21行:.Orientation = xlLeftToRight。排序的方向是自左向右