前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA实用小程序56: 删除多余空格

VBA实用小程序56: 删除多余空格

作者头像
fanjy
发布2019-08-08 17:03:59
2.6K0
发布2019-08-08 17:03:59
举报
文章被收录于专栏:完美Excel完美Excel

学习Excel技术,关注微信公众号:

excelperfect

下面的自定义函数:TrimAllSpace函数,可以将词语之间含有多个空格分隔的字符串整理成只有一个空格分隔词语的字符串,同时移除字符串开头和结尾处的空格。该函数有两个参数,其中第二个参数设置是否保留字符串中的制表符,默认为True,即不保留制表符。

TrimAllSpace函数的代码:

'删除前导和结尾处的空格

'并将里面的多个空格(包括制表符)缩减为单个空格

'参数strText:要移除多余空格的字符串

'参数bRemoveTabs:指定是否将制表符转换成单个空格

'默认为True,即删除制表符

Function TrimAllSpace(ByVal strText AsString, _

Optional bRemoveTabs As Boolean = True) As String

'声明变量

Dim strTemp As String

Dim strOutput As String

Dim i As Integer

Dim strChar As String * 1

'如果想将制表符转换成单个空格

'使用了TranslateString函数

If bRemoveTabs Then

strText = TranslateString(strText, vbTab, " ")

End If

'移除前导和结尾处的空格

strTemp = Trim(strText)

'依次遍历每个字符

For i = 1 To Len(strTemp)

strChar = Mid$(strTemp, i, 1)

'如果字符是一个空格且前一个字符也是空格,忽略

'否则,添加到输出字符串

If Not (strChar = " " And Right$(strOutput, 1) = "") Then

strOutput = strOutput & strChar

End If

Next i

'返回结果

TrimAllSpace = strOutput

End Function

这个函数调用了TranslateString函数:

If bRemoveTabs Then

strText = TranslateString(strText, vbTab, " ")

End If

将字符串包含的所有制表符转换成空格。TranslateString函数代码及说明详见《VBA代码库07:功能强大的字符替换函数》。

代码中还有一个技巧就是:

'如果字符是一个空格且前一个字符也是空格,忽略

'否则,添加到输出字符串

If Not (strChar = " " AndRight$(strOutput, 1) = " ") Then

strOutput = strOutput & strChar

End If

注意,双引号之间是一个空格。如果前一个添加到输出字符是空格,当前字符也是空格,则忽略当前字符,否则添加到输出字符串中。这样,输出字符串中不会有相邻的两个空格。很巧妙的思路,值得学习!

TrimAllSpace函数测试结果如图1所示。

图1

TrimAllSpace函数程序代码的图片版如下:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档