分享

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

 温暖南方 2019-07-01

excelperfect

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

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

输出:

i = 1, j = 2

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

>>> “{0}, {1} {2}”.format(“”, “”, “”)

输出:

, 二和三

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

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

ImitatePrint('我的%1%2', '

则会输出:

Excel

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

ImitatePrint('我的%2%1', '

则会输出:

我的完美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& ')'

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多