VBA 学习笔记 (任务完成,准备告一段落)

在辞去第一份工作之前,顺利的完成了自己做的一个优化项目,目测当设置条目到达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 函数返回包含 UnicodeString,若在不支持 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 If
End Sub

4. 5000长度的字符串中间有参数,开始考虑过用replace这个函数以及worksheetfunction的replace,发现在处理十六进制的chrb(0)的时候都有问题,长度不能正确计算,后来只能考虑笨方法,将参数和空格一个一个的连接起来,幸好中间的空格有很多,要不然真的会死人的。关于为什么replace不能正确工作,我想是因为在VBA中,单元格的格式为Bstr,是以null结尾的,即以chrb(0)结尾的。

5. 输出结果,由于单元格不能正确处理chrb(0),所以考虑直接输出到txt。

Option Explicit
Sub 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 #1
End Sub

6. 项目后续的过程无关vba


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值