VBA实现数据库中的字段处理(下划线去掉,后面的字母变大写)之版本1.0。

 

可以处理一列数据,数据从B6位置开始,中间不能有空,遇到空就判断到了最后一个,跳出循环!

 

 

1.0版本中有两个问题,现在已经修正了
'履历 '2010/10/23(周六)下午第一版做成 '2010/10/26(周二)晚上,对于两个问题进行了修改(1不含有下划线的情况,2开头字母不应大写)

 

 

修正在V1.1版本中(这里没有做任何修改)

以下是1.1版本的链接

http://blog.csdn.net/sxzlc/archive/2010/10/26/5967663.aspx

 

 

 

'版权所属:孙学智 2010/10/23 Private Sub underLine_Click() '版权所属:孙学智 2010/10/23 '数据库中的列名 Dim dbColumnStr As String '开始的位置,由横竖坐标确认 Dim index As Integer Dim rangeStr '行(横) index = 6 '列(竖) rangeStr = "B" '生成单元个位置,这里没有自动装箱,所以要用一个函数把数字转换一下 rangeStr = rangeStr + CStr(index) '单元个位置生成正确与否,测试用 'MsgBox rangeStr '判断不为空,注意这里要用""空串,而不能使用null,null时永远false Do While Sheet1.Range(rangeStr).Value <> "" '进入循环测试用 'MsgBox rangeStr 'Excel中的数据(数据库中的列名) dbColumnStr = Sheet1.Range(rangeStr).Value '调用对数据库中列明处理的函数 Call underLineEscape_upcase(dbColumnStr) '处理之后位置,稍微往右移动一下 rangeStr = "C" '通过横竖两个坐标,组合出生成的位置 rangeStr = rangeStr + CStr(index) '输出处理之后的数据 Sheet1.Range(rangeStr).Value = dbColumnStr '读取下一个数据 index = index + 1 '源数据的位置还要变回来 rangeStr = "B" '通过横竖两个坐标,组合出源数据的位置 rangeStr = rangeStr + CStr(index) Loop MsgBox "end" '版权所属:孙学智 2010/10/23 End Sub '发现下划线,去掉,得到以下划线分割的字符串 (不知道是否有java中split的功能) Sub underLineEscape_upcase(ByRef dbColumnStr As String) '版权所属:孙学智 2010/10/23 '存放分割后组合的字符串 Dim str As String '存放每一个分割的字符串 Dim splitStr As String '初始化一下 str = "" '在VBA中,字符串索引从1开始 Dim index '如果返回的不是0,就表明查到数据了,则继续循环 Dim flag '初始化开始位置 index = 1 '初始化flag flag = 1 '获取字符串长度 length = Len(dbColumnStr) '获取第一个"_"的位置,不在循环里面 index = InStr(index, dbColumnStr, "_") '当没有找到 flag=0,或 超过长度时,退出循环 Do While (flag <> 0 And index <= length) '获取字符串中"_"的位置 index = InStr(index, dbColumnStr, "_") '如果最后一次没有查到那么index=0,而之前还查到了(一次也没有的情况不会进入循环), '这时flag中,保存的还是是上一个"_"的位置,但是由于下面的判断flag不等于一时会加一 '所以,这里还要加一,否则最后一个串会少一个长度 If index = 0 Then index = length + 1 '如果是从找到"_"的位置开始需要加1,因为flag存的是"_"的位置 If flag <> 1 Then flag = flag + 1 '获取字符串,以"_"分割 splitStr = Mid(dbColumnStr, flag, index - flag) '把第一个字母变成大写 Call firstCharToUpcase(splitStr) '测试时使用 'MsgBox splitStr '把每一个分割后并且转换为大写的字符串组合起来 str = str + splitStr '因为有0的判断,所以不能加1。同时在上面还有使用,这样就不用再定义一个临时变量存index了 flag = index '改变下一个索引开始的位置,也就是"_"之后那个字母的索引 index = index + 1 Loop '分割后的字符串,因为是应用传值,这里就相当于return dbColumnStr = str '版权所属:孙学智 2010/10/23 End Sub '把字符串中的第一个字母变成大写 Sub firstCharToUpcase(ByRef str As String) '版权所属:孙学智 2010/10/23 Dim tempStr Dim length '获取长度 length = Len(str) '为了保留小写部分,使用后两位 tempStr = str '使用转换为大写的第一位 str = StrConv(str, vbUpperCase) '把第一位和后两位拼接起来 str = Mid(str, 1, 1) + Mid(tempStr, 2, length) '版权所属:孙学智 2010/10/23 End Sub 

 

 

你可能感兴趣的:(数据库,String,测试,Integer,VBA,2010)