前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Excel实战技巧49: 模拟占位输出

Excel实战技巧49: 模拟占位输出

作者头像
fanjy
发布2019-07-19 16:44:46
9000
发布2019-07-19 16:44:46
举报
文章被收录于专栏:完美Excel完美Excel

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

excelperfect

在C语言中,经典的函数printf用来格式化输出内容,在格式字符串中包含了要原样输出的字符和占位符,占位符一般由%和指定转换格式组成,例如:

printf(“i = %d, j = %d”, 1, 2)

输出:

i = 1, j = 2

在Python中,可以使用“{}”来占位,并在右侧指定相应的值,例如:

>>> “{0}, {1} 和 {2}”.format(“一”, “二”, “三”)

输出:

一, 二和三

在VBA中,我通常使用debug.print在VBE中输出结果,或者使用MsgBox函数来显示信息。其实,使用VBA自定义函数,也可以模拟类似C语言的占位输出。

假设自定义函数为ImitatePrint,我输入:

ImitatePrint("我的%1是%2", "微信公众号", "完美Excel")

则会输出:

我的微信公众号是完美Excel

其中,%1和%2是占位符,分别代表要在此处输入的数据。当然,也可以将它们调换,例如:

ImitatePrint("我的%2是%1", "微信公众号", "完美Excel")

则会输出:

我的完美Excel是微信公众号

自定义函数ImitatePrint的代码如下:

'代码来源自《VBA高级开发指南》

Public Function ImitatePrint( _

ByVal strIn As String, _

ParamArray varItems() As Variant) _

As String

'错误处理

On Error GoTo Handleerr

'声明变量

Dim intPos As Integer

Dim strReplace As String

Dim intI As Integer

'循环用户输入的数据

For intI = LBound(varItems) ToUBound(varItems)

'依次循环占位符位置

strReplace = "%" & (intI+ 1)

intPos = InStr(1, strIn, strReplace)

'如果找到,则使用相对应的值替换

If intPos > 0 Then

strIn = Left$(strIn, intPos - 1)& _

varItems(intI) & Mid$(strIn,intPos + _

Len(strReplace))

End If

Next intI

'返回结果

ExitHere:

ImitatePrint = strIn

Exit Function

'发生错误则给出提示

Handleerr:

Select Case Err.Number

Case Else

MsgBox "错误:" & Err.Description & _

" (" & Err.Number& ")"

End Select

Resume ExitHere

End Function

代码中,使用ParamArray指定用户可以输入多个数据。在使用该函数时,输入的替换数据应与占位符的数量一致。

使用下面的示例代码测试:

Sub test()

Debug.Print ImitatePrint("我的%1是%2", "微信公众号", "完美Excel")

End Sub

下图1是测试示例结果:

图1

下面是自定义函数ImitatePrint代码的图片版:

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

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

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

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

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