Excel写批量代码(二)

标签: Excel  编码技巧  VBA  自动编码

一般代码在编写的时候,关于命名大家都约定俗成为驼峰式,即每个单词的首字母大写,名称的开头小写,例如getCompanyCode()这样的。

上次我们拿到的设计书里面给出的项目名称都是大写,而且里面还有下划线作为分割,在实际代码编写中肯定是不允许这样的,如果我们想继续使用Excel自动编码,就需要对其进行格式转化。这个单纯用Excel的函数实现起来很困难,因此我在其中使用了VBA来进行辅助。

Office系列软件的VBA功能非常强大,只是我们对其挖局甚少,其宏编程在处理大型文档非常省时省力。那么如何进行使用呢?

首选,打开Excel,调出开发者工具选项:


如果你没有这个选项栏,在“选项”里面-》“自定义功能区”-》开发工具勾选上即可:


接下来就开始编写了,首选选择开发工具,点“插入”,选择“ActiveX控件”下第一个,在工作表上拖出一个按键。


双击该按键,进入VBA编辑界面:


在click方法中间,把下面代码粘贴进入:

Dim rowNo As Integer
rowNo = 2

Do While Cells(rowNo, 1) <> ""
    
    Dim str As String
    
    '获取要进行变换的名称
    str = Cells(rowNo, 3)
    '把名称里面的下划线替换为空格
    str = Replace(str, "_", " ")
    '大小写转化,vbProperCase是把单词的首字母大写
    str = StrConv(str, vbProperCase)
    '去除空格
    str = Replace(str, " ", "")
    '值赋回单元格
    Cells(rowNo, 7).Value = str
    
    '把第一个字符改为小写
    str = LCase(Left(str, 1)) & Right(str, Len(str) - 1)

    '值赋回单元格
    Cells(rowNo, 6).Value = str

    rowNo = rowNo + 1
Loop

解释一下这段代码:首先定义一个整形的rowNo,用来表示行号,初识从第二行开始(第一行都是题头)。

Cells()函数指定了一个具体的单元格,也可以指定单元格范围。我在这里指定的是具体单元格,行号为rowNo,列号为2,其实还是我们粘贴过来的那一堆项目名称。当项目名称存在的时候,执行循环里面语句,否则就终止。

在循环里面,先取得需要变换的字符串,就是表上第三列的内容,首选把下划线替换为空格,其实就是把名称进行了切分。然后进行大小写转化。VB提供了现成的函数可以使用StrConv()

StrConv(string, conversion, LCID)

LCID是个可选值,我们在这里并不用。

 conversion转化格式有下面三种:

vbUpperCase 值为1 将字符串文字转成大写。 
vbLowerCase 值为2 将字符串文字转成小写。 

vbProperCase 值为3 将字符串中每个字的开头字母转成大写

经过转化,已经得到了单词开头大写的字符串,我们把空格再去掉,就可以使用了,但有的时候开头也需要小写,我们可以在此基础上再次转化。

str = LCase(Left(str, 1)) & Right(str, Len(str) - 1)

这段代码先是从字符串的左侧开始数第一位,变为小写,然后再去右侧数的剩下位数,最后拼接一起。

经过这样的变换,我们就可以得到需要的名称了。点击一下按键,Excel为我们自动变化。


接下来工作就简单许多了,就是拿这些得到结果进行拼接,拼出我们需要的代码就行了


生成代码列:="outDto.set"&G2&IF(D2>1,E2,"")&"(inDto."&F2&IF(D2>1,E2,"")&");"

代码注释列:="// "&B2&IF(D2>1,E2,"")

最终代码列:=I2&CHAR(10)&H2

最后一列拷贝到notepad上面是这样的效果:


最后查找替换去掉引号,就大功告成了。

我把写的这个小工具上传到网上,大家可以根据自己需要进行改造。

点击打开链接



原文链接:加载失败,请重新获取