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。排序的方向是自左向右