乐于分享
好东西不私藏

SolidWorks*Excel+VBA-自适应寻踪表格标题位置

SolidWorks*Excel+VBA-自适应寻踪表格标题位置

随着自动化功能不断开发深入,相对应的表格标题字段也会随之增加,这就带来一个问题,历史程序段对表格单元格索引都是简单粗暴输入序号,像这样。
.cells(1,3)'第1行第3列
然后我现在需要在第三列之前新增一列,原本的第三列就变成了第四列,那么程序中必须也要对应调整才能维持正确引用。
.cells(1,4)'第1行第4列
这种机械式引用虽然很方便,但是维护起来简直就是灾难,当有N段程序,每段程序都有M个这种引用,挨个调整得疯。
所以,为了后续不再这么痛苦,必须让它能自适应寻踪,至少能通过标题文字判断位置。
于是,这就想到了一个非常NEW Bility 的东西,字典。在字典面前,什么数组,集合,都是弟弟,毕竟,字典是自带索引的!还具备唯一特性。
Sub Add(Key, Item)'key:键值,在字典中是唯一的,不能反复添加'Item:项值,可以是数字,字符串,数组,集合等各种变量
Property Key(Key)'调用某个键下对应的属性值'比如key("A")就是返回A这个键对应的Item值
那么,接下来进入正题
Public PropTitDicA As New Dictionary '非通用化属性表头'申明一个全局字典PropTitDicA
Function SetGolDic() '给全局字典赋值Dim i As Integer    With ThisWorkbook.ActiveSheet        PropTitDicA.RemoveAll '先清空一下        i = 1        Do While .Cells(1, i) <> ""            PropTitDicA.Add .Cells(1, i).Value, i            i = i + 1        Loop    End WithEnd Function'这样一来表头以及对应的列号都存到了字典里。
.Cells(1PropTitDicA("文件位置"))'第1行第2列引用方式就可以变为通过标题文字进行追踪
2个注意点:
每段程序运行最初都需要调用一次SetGolDic方法刷新字典,确保运行程序时标题文字一定能对上。
程序中.Cells引用的文字要和表格中标题符合,如果表格标题改了内容,但是程序中没改,那就容易报错,因为字典查不到key。
这样一来,表格标题列随便改位置,程序都能准确定位到目标,就算标题改了,编程界面搜索替换一次性完事。
除了字典,也可以通过worksheetfunction调用Excel函数定位单元格,比如vlookup,match,方法有很多,不过我还是更偏爱字典一些,简单粗暴,报错概率还小。