VBA 学习笔记 (任务完成,准备告一段落)
来源:互联网 发布:工业机器人编程 编辑:程序博客网 时间:2024/06/03 20:14
在辞去第一份工作之前,顺利的完成了自己做的一个优化项目,目测当设置条目到达30条的时候,可以节省时间1~3个小时。该项目用于在Mainfrime上通过写数据库完成对参数设置。每个客户的每一条参数长度为5000,其中有用到一些十六进制的参数 。
1. 将参数复制到excel
2. 去除每一个参数多余的空格,并做简单的合法性检查,如果不合法则把不合法的参数所在单元格颜色背景颜色改为红色。
1>. trim(String) '去除多余空格2>. cells(i,j).interior.colorindex =3 '红色
3. 把需要改变的参数做适当变动,如SQL控制语句,如果该参数为delete,则应该变为DVGVTRCD;如果该参数为add,则应该变为IVGVTRCD;如果该参数为change,则应该变为UVGVTRCD; 另一个重要的变动就是设置,十六进制的参数,譬如一个数在ultra edit的十六进制模式下为09,这时要用到chrb这个函数。用法如下(可以在excel中按F1查询):
ChrB 函数作用于包含在 String 中的字节数据。ChrB总是返回一个单字节,而不是返回一个字符,一个字符可能是一个或两个字节。ChrW 函数返回包含Unicode 的String,若在不支持 Unicode 的平台上,则其功能与Chr 函数相同。
Option Explicit '加上这句之后,变量必须声明后才能使用。可以在设置每次新建一个模块就加上这一句。Sub test1() Dim temp As Variant Dim strSQL As String strSQL = "Delete"
'LCase将字符串编程小写,这样便于比较 temp = Switch(LCase(strSQL) = "delete", "DVGVTRCD", _ LCase(strSQL) = "add", "AVGVTRCD", _ LCase(strSQL) = "change", "UVGVTRCD") If (IsNull(temp)) Then ‘如果strSQL不是delete,add或者change,则返回结果应该为null Cells(1, 1).Interior.ColorIndex = 3 '将第一个单元格的背景色变为红色 Else: Sheet1.Cells(1, 1) = temp ‘否则将值赋给第一个单元格 End IfEnd Sub
4. 5000长度的字符串中间有参数,开始考虑过用replace这个函数以及worksheetfunction的replace,发现在处理十六进制的chrb(0)的时候都有问题,长度不能正确计算,后来只能考虑笨方法,将参数和空格一个一个的连接起来,幸好中间的空格有很多,要不然真的会死人的。关于为什么replace不能正确工作,我想是因为在VBA中,单元格的格式为Bstr,是以null结尾的,即以chrb(0)结尾的。
5. 输出结果,由于单元格不能正确处理chrb(0),所以考虑直接输出到txt。
Option ExplicitSub test2() Dim path As String Dim filename As String Dim strTest As String path = ThisWorkbook.path + "\" '获取当前excel的位置 ChDir (path)'改变输出文件的默认目录,否则,将输出到windows默认的文档位置 filename = "123.txt" strTest = "test" Open filename For Binary As #1 '以Binary的方式打开,因为有一些二进制的字符。 如果该文件不存在,则会直接创建一个这样的文件。 Put #1, , strTest'将字符输出到文件 Close #1End Sub
6. 项目后续的过程无关vba
- VBA 学习笔记 (任务完成,准备告一段落)
- 告一段落,出来呼吸一下。我完成了任务。
- VBA学习笔记(1)
- Linux内核学习笔记~暂告一段落
- VBA学习7_VBA自定义工作表函数不能完成的任务
- 继续完成学习任务
- Excel VBA 学习笔记(陆续更新)
- VBA for Word 学习笔记(一)
- Excel VBA 学习笔记(2)
- VBA学习笔记
- VBA学习笔记
- VBA 学习笔记 1
- VBA 学习笔记 2
- VBA学习笔记 3
- VBA 学习笔记 4
- Excel VBA 学习笔记
- VBA学习笔记
- EXCEL VBA学习笔记
- Android Fragment实用方法及交互实例
- Hibernate与JDBC的区别
- 前端好用的插件集合
- 带缓冲IO与不带缓冲IO
- 第2周项目3时间类
- VBA 学习笔记 (任务完成,准备告一段落)
- 图片适配
- Unity学习 第一课==备忘录
- hdoj 1106 排序——脑洞产物 两种做法
- 反破解技巧,请叫我搬运工
- cocos2dx设计模式之单例模式
- 链式前向星
- HDU 2037今年暑假不AC
- 默默地开始