精华内容
下载资源
问答
  • Sql_text = "Select fitemid,fnumber,fname,flowlimit,fhighlimit,fqty,sum(fsellqty) as fsellqty From V_XMK_V_XMK_SecInv_sell_Qty Where 1=1 " If startdate <> " " Then Sql_text = Sql_text &...
  • strText为需要处理的字符串,共有有8个字符,经过正则替换,结果保存在变量strNew中,不难看出首位各有一个空格,并且每个字符之间也插入了一个空格。这是如何实现的呢? 正则对象不指定匹配模式时,相当于Pattern =...

    最近有个网友提问,下面的代码中并没有指定正则表达式的匹配模式(Pattern属性),为什么也可以执行,正则对象根据什么规则去进行匹配。
    示例代码如下。

    Sub Demo()
        Dim strText As String
        Dim strNew As String
        Dim varText
        Dim objRegExp As Object
        Set objRegExp = CreateObject("VBSCRIPT.REGEXP")
        With objRegExp
            .Global = True
        End With
        strText = "ABCDEFGH"
        strNew = objRegExp.Replace(strText, " ")
        varText = Split(Trim(strNew))
        Stop
        Set objRegExp = Nothing
    End Sub
    

    运行代码,本地窗口如下所示。strText为需要处理的字符串,共有有8个字符,经过正则替换,结果保存在变量strNew中,不难看出首位各有一个空格,并且每个字符之间也插入了一个空格。这是如何实现的呢?
    在这里插入图片描述
    正则对象不指定匹配模式时,相当于Pattern = "",此时匹配字符串中的每一个位置(零宽),注意不是每个字符。例如对于字符串ABCD,包含4个字符,这个非常容易理解,但是其中包含5个位置(下箭头所示),如下图所示。黄色标记为字符串的开始和结束标记。
    在这里插入图片描述
    知道了匹配位置(零宽)和匹配字符的区别,就不难理解为什么正则替换的结果包含前导空格和尾随空格。
    第12行代码使用Split函数将正则替换结果拆分为数组。


    字符串转换为单字符数组有多种实现方式,本文只是其中的一种正则应用而已。

    展开全文
  • VBA快速合并字符串方法

    千次阅读 2020-12-23 02:16:44
    本文将就讲一下VBA中快速连接字符串的集中方法。 我们使用一个简单的示例,提取1-10中的偶数并输出结果,判断偶数非常简单,程序主框架如下。 Sub Demo() Dim i As Integer, msg As String For i = 1 To 10 If ...

    在前几天分享的文章【快速对比数据】中,使用了如下代码,有小朋友问为什么要再第20行代码中使用Trim函数呢?是否可以在构建字符串时直接处理呢?本文将就讲一下VBA中快速连接字符串的几种方法。
    在这里插入图片描述
    我们使用一个简单的示例,提取1-10中的偶数并输出结果,判断偶数非常简单,程序主框架如下。

    Sub Demo()
        Dim i As Integer, msg As String
        For i = 1 To 10
            If Int(i / 2) = (i / 2) Then  '构建字符串msg
        Next
        Debug.Print "偶数:" & msg
    End Sub
    

    假设以空格分隔结果。

    • 方法1:最经典的教科书式的用法为:
    Sub Demo1()
        Dim i As Integer, msg As String
        For i = 1 To 10
            If Int(i / 2) = (i / 2) Then
                If Len(msg) = 0 Then
                    msg = CStr(i)
                Else
                    msg = msg & " " & CStr(i)
                End If
            End If
        Next
        Debug.Print "偶数:" & msg
    End Sub
    

    【代码解析】
    第5行代码判断msg变量是否为空,如果为空则说明是第一个偶数,那么第6行代码直接赋值,否则第8行代码在msg变量之后追加空格和偶数。

    • 方法2:输出时取巧
      对于追求极致,希望代码行数近可能的少的开发者来说,则会采用如下代码,代码行数精简了近一半。
    Sub Demo2()
        Dim i As Integer, msg As String
        For i = 1 To 10
            If Int(i / 2) = (i / 2) Then msg = msg & " " & CStr(i)
        Next
        Debug.Print "偶数:" & Trim(msg)
    End Sub
    

    【代码解析】
    第4行代码构建输出结果时,不再对第一个偶数做特殊处理,这样产生的字符串为" 2 4 6 8 10",第一个数字之前会有一个多余的前导空格,幸运的是VBA中提供了相应函数去除空格,第6行代码中使用Trim函数将可以实现完美输出了,效果和方法1完全相同。

    • 方法3:灵活万能法
      看到这里有的读者可能会有疑问,如果分隔符不是空格,怎么办?VBA中没有去除其他前导字符的函数,再写个自定义函数,有些南辕北辙了吧!
      其实这样的场景实现起来也很简单,例如分隔符改为逗号。
    Sub Demo3()
        Dim i As Integer, msg As String
        For i = 1 To 10
            If Int(i / 2) = (i / 2) Then msg = msg & "," & CStr(i)
        Next
        Debug.Print "偶数:" & Mid(msg, 2)
    End Sub
    

    【代码解析】
    与方法2相比,区别仅仅在于第6行代码,使用Mid函数去除第一个字符(多余的逗号),同样简洁。

    • 方法4:通用扩展法
      有时开发代码时分隔符个数并不确定,那么方法3去除多余的前导字符时,可能就会出问题,只要做一下简单扩建,就可以完美适配这样的场景。
    Sub Demo4()
        Dim i As Integer, msg As String
        Const STR_DELI = "||"
        For i = 1 To 10
            If Int(i / 2) = (i / 2) Then msg = msg & STR_DELI & CStr(i)
        Next
        Debug.Print "偶数:" & Mid(msg, Len(STR_DELI)+1)
    End Sub
    

    【代码解析】
    第3行代码定义分隔符常量,用于模拟任意长度的分隔符(单个或多个字符)。
    第7行代码输出时Mid函数的第二个参数使用Len函数获取分隔符的长度,从其之后一位开始截取字符串,就可以得到正确的结果。


    同一个问题,解决方法有多种,条条大路通罗马。

    展开全文
  • Sub 宏1() ' ' 宏1 宏 ...D:\VBA\被插入文字的文件.docx", ConfirmConversions:=False, ReadOnly _ :=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _ ...
    Sub 宏1()
    '
    ' 宏1 宏
    '
        Documents.Open FileName:="D:\VBA\被插入文字的文件.docx", ConfirmConversions:=False, ReadOnly _
            :=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _
            :="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _
            , Format:=wdOpenFormatAuto, XMLTransform:=""
        Selection.WholeStory
    
    '
        Documents.Open FileName:="D:\VBA\待插入到另一个文件中的文字文件.docx", ConfirmConversions:=False, ReadOnly _
            :=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _
            :="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _
            , Format:=wdOpenFormatAuto, XMLTransform:=""
    
    
        '选中所有的文字
        Selection.WholeStory
    
    
    
    
    
    '回车符号
    qhhc = Chr(13)
    
    '把选中的文字赋值
    ssstring_selection = Selection.Text
    
    '设置默认数值为1
    ssstring_selection_n1 = 1
    
    
    '下面是循环语句:do until    ...   loop,直到字符串的第一个字符为回车符号。
    '要求这样的文章内,不出现单独的回车符号空行才行。
    
    Do Until ssstring_selection_n1 = 0
    
    '算出字符串的长度
    len11 = Len(ssstring_selection)
    
    '用查找字符串函数instr,查找字符串中的第一个回车符号
    ssstring_selection_n1 = InStr(ssstring_selection, qhhc)
    
    
    '去除第一个回车符号(包括回车符)之前后,剩余的字符串个数。
    len12 = len11 - ssstring_selection_n1
    
    
    '减去回车符号之后,左边的字符个数
    ssstring_selection_n1 = ssstring_selection_n1 - 1
    
    '用left函数,取出左边的字符串
    temptext = Left(ssstring_selection, ssstring_selection_n1)
    
    '只留下右边的字符串。
    ssstring_selection = Right(ssstring_selection, len12)
    
    '如何temptext不等于空字符串,则
    If temptext <> "" Then
    
    
    Windows("被插入文字的文件.docx").Activate
    
    ActiveDocument.Content.InsertAfter temptext
    
    '把光标移动到文档未尾,下一句为进行回车。
    Selection.EndKey Unit:=wdStory
    Selection.TypeParagraph
    
    End If
    
    Loop
    
    
        ActiveWindow.Close
    End Sub
    

    要求:Word2007 或者 Word2010下操作。

    展开全文
  • VBA字符串转换——StrConv 函数

    千次阅读 2020-01-12 16:31:55
    StrConv 函数 返回按指定类型转换的 Variant (String)。 语法 StrConv(string, conversion, LCID)...要转换的字符串表达式。 conversion 必要参数。Integer。其值的和决定转换的类型。 LCID 可选的。如...

    StrConv 函数

    返回按指定类型转换的 Variant (String)。

    语法

    StrConv(string, conversion, LCID)

    StrConv 函数的语法有下面的命名参数:

    部分说明
    string必要参数。要转换的字符串表达式。
    conversion必要参数。Integer。其值的和决定转换的类型。
    LCID可选的。如果与系统LocaleID不同,则为LocaleID(系统LocaleID为缺省值。)

    设置值

    conversion 参数的设置值为:

    常数说明
    vbUpperCase1将字符串文字转成大写。
    vbLowerCase2将字符串文字转成小写。
    vbProperCase3将字符串中每个字的开头字母转成大写。
    vbWide*4*将字符串中单字节字符转成双字节字符。
    vbNarrow*8*将字符串中双字节字符转成单字节字符。
    vbKatakana**16**将字符串中平假名字符转成片假名字符。
    vbHiragana**32**将字符串中片假名字符转成平假名字符。
    vbUnicode64根据系统的缺省码页将字符串转成 Unicode。 (在Macintosh中不可用。)
    vbFromUnicode128将字符串由 Unicode 转成系统的缺省码页。 (在Macintosh中不可用。)

    *应用到远东区域。

    **仅应用到日本。

    注意 这些常数是由 VBA 指定的。可以在程序中使用它们来替换真正的值。其中大部分是可以组合的,例如 vbUpperCase + vbWide,互斥的常数不能组合,例如 vbUnicode + vbFromUnicode。当在不适用的区域使用常数 vbWidevbNarrowvbKatakana,和 vbHiragana 时,就会导致运行时错误。

    下面是一些一般情况下的有效分界符:Null (Chr$(0)),水平制表符 (Chr$(9)),换行 (Chr$(10)),垂直制表符 (Chr$(11)),换页 (Chr$(12)) ,回车 (Chr$(13)),空白 (SBCS) (Chr$(32))。在 DBCS中,空白的实际值会随国家/地区而不同。

    说明

    在把 ANSI 格式的 Byte 数组转换为字符串时,您应该使用 StrConv 函数。当您转换 Unicode 格式的这种数组时,使用赋值语句。

    StrConv 函数示例

    本示例使用StrConv 函数来将Unicode 字符串转换成 ANSI 字符串。

    Dim i As Long
    Dim x() As Byte
    x = StrConv("ABCDEFG", vbFromUnicode)    ' 转换字符串。
    For i = 0 To UBound(x)
        Debug.Print x(i)
    Next

    source:VBA Help 

    展开全文
  • VBA字符串处理大全-from EH

    万次阅读 2017-06-22 09:54:45
    VBA字符串处理大全 转载出处 1 VBA中的字符串 2 VBA中处理字符串的函数  2.1 比较字符串  2.2 转换字符串  2.3 创建字符串  2.4 获取字符串的长度  2.5 格式化字符串  2.6 查找字符串  2.7 提取...
  • VB/VBA字符串

    2021-07-25 13:21:19
    字符串历来就是编程界的麻烦 前言 字符串在人机交互中,举足轻重,是站人这一边的,其作用甚至比变量和函数更突出。变量详见《变量,还有这些秘密》,函数详见《VB/VBA中的函数,用了那么久,其实是这样的》。试想...
  • VBA字符串处理大全

    千次阅读 2015-09-22 00:26:25
    VBA字符串处理大全
  • VBA提取字符串中的数字

    千次阅读 2021-04-26 15:15:28
    上一篇讲了用 python 提取字符串中的数字,这次用VBA来事项。总体思路和 python 是一样的,代码如下: Option Explicit Sub GetNumbers() Dim from_string As String, convert_numbers As String Dim i, j, k, ...
  • VBA字符串处理函数 (2)

    千次阅读 2012-11-08 02:29:25
    可使用InStr函数返回一字符串在另一字符串中的位置,因此,也可以使用该函数确定一个字符串中是否包含有另一个字符串。其语法为: InStr([Start,]string1,string2[,compare]) 其中,参数Start为可选参数,设置查找...
  • VBA数组赋值

    2012-04-05 23:30:05
    先说一下,刚才一个错误...数组是这样赋值的: Dim a2(10) As Integer '10是可以使用的最大上标,这和C语言不太一样 Dim a3(-2 To 10) As Integer '也可以定义下标 Dim a1() As Integer '定义变长数组...
  • vba给数组赋值

    万次阅读 2016-02-24 11:41:05
    '向VBA数组中写入数据    '1、按编号(标)写入和读取     Sub t1() '写入一维数组   Dim x As Integer   Dim arr(1 To 10)  arr(2) = 190  arr(10) = 5   End Sub    Sub t2() '向二维数组写入数据和读取 ...
  • 字符串中的乱码,VBA

    2010-07-01 20:10:18
    把单元格的值赋值字符串变量,再用msgbox函数现实字符串变量的值,竟然显示乱码
  • EXcelVBA之变量赋值运算

    千次阅读 2020-06-03 15:55:15
    因为美元符合是字符,它需要用引号来包括起来 4、字符&必须用于每次你要在前面的字符串后加新信息的时候 5、变量Cost是一个占位符,当过程运行时,计算器的实际价格将显示在这儿 6、字符&可以连接任何字符串 7、...
  • VBA字符串处理函数1

    2012-03-02 10:09:44
    1 VBA中的字符串 VBA不仅可以处理数字,也可以处理文本(字符串)。VBA提供了两类字符串: 一类为固定长度的字符串,声明时包含指字的字符数。例如,下面的语句 Dim strFixedLong As String*100 声明字符串变量后...
  • VBA字符串函数

    万次阅读 2010-11-03 12:57:00
    当一个数字转成字符串时,总会在前面保留一个空位来表示正负,即字符串的第一位一定是空格或正负号。如果参数 number 为正,返回的字符串前面包含一空格。 Str 函数将句点 (.) 作为有效的小数点。示例如下:  ...
  • VBA 字符串

    2015-01-13 23:59:00
    VBA字符串处理大全 1 VBA中的字符串 2 VBA中处理字符串的函数 2.1 比较字符串 2.2 转换字符串 2.3 创建字符串 2.4 获取字符串的长度 2.5 格式化字符串 2.6 查找字符串 2.7 提取字符/字符串 2.8 删除空格 ...
  • 材料: 提供一份数据: arr=[ {value:335, name:'直接...//将数组中的name取到赋值给对象中的x obj.y=arr[i].value;//将数组中的value取到赋值给对象中的y arr1.push(obj);//将对象push进arr1数组中 } } b();//调用函数
  • 因为在Excel中VBA是默认隐藏且禁止运行宏的,所以首先介绍如何在Excel中启用VBA,然后介绍基础的变量、常量与循环、判断语句
  • 无论是EXCEL的操作,还是VBA的操作,都会对大家有所帮助。知识的讲解过程中,希望大家得到哪怕是一点点的收获,我的时间就是有意义的。今日给大家讲VBA的循环,这个是非常基础的知识,在VBA的相关内容中我也一直在用...
  • VBA字符串处理

    千次阅读 2013-11-15 16:38:21
    1 VBA中的字符串 2 VBA中处理字符串的函数  2.1 比较字符串  2.2 转换字符串  2.3 创建字符串  2.4 获取字符串的长度  2.5 格式化字符串  2.6 查找字符串  2.7 提取字符/字符串  2.8 删除空格  2.9 返回...
  • VB定义字符串数组并赋值

    万次阅读 2019-06-26 16:56:56
    EOF:指当前记录位置位于Recordset对象的最后一个记录之后。
  • VBA 字符串处理

    2013-09-09 17:44:00
    1 VBA中的字符串 2 VBA中处理字符串的函数 2.1 比较字符串 2.2 转换字符串 2.3 创建字符串 2.4 获取字符串的长度 2.5 格式化字符串 2.6 查找字符串 2.7 提取字符/字符串 ...
  • 在VB中实现将字符串转换成变量名,提供了两种。主要使用Contrl和callbyname ……
  • VBA,字符串处理大全

    万次阅读 2008-02-04 12:23:00
    1 VBA中的字符串2 VBA中处理字符串的函数 2.1 比较字符串 2.2 转换字符串 2.3 创建字符串 2.4 获取字符串的长度 2.5 格式化字符串 2.6 查找字符串 2.7 提取字符/字符串 2.8 删除空格 2.9 返回字符代码 ...
  • 如何用VBA批量将编码前两位替换成文本“NO”? 代码 替换结果 72587 NO587 40213 NO213 24632 NO632 32761 NO761 61285 NO285 38215 NO215 56292 NO292 11726 ..
  • VBA字符串处理函数2

    2012-03-02 10:10:34
    可使用InStr函数返回一字符串在另一字符串中的位置,因此,也可以使用该函数确定一个字符串中是否包含有另一个字符串。其语法为: InStr([Start,]string1,string2[,compare]) 其中,参数Start为可选参数,设置查找...
  • VBA call 带参数 传递 字符串案例

    千次阅读 2019-03-10 00:29:57
    背景:计划用VBA写一个xml文件(开发工具 源 不能满足需求)整个脚本要很多次写入动作,所以做一个子程序直接调用。 解读:1....sub xiexml(接收任意字符串赋值文件路径到变量 xmlfile追加写入的...
  • Sql_text = "Select fitemid,fnumber,fname,flowlimit,fhighlimit,fqty,sum(fsellqty) as fsellqty From V_XMK_V_XMK_SecInv_sell_Qty Where 1=1 " If startdate <> " " Then Sql_text = Sql_text &...
  • 字符串a按 , 进行分隔后得到的数组赋给b 例: a = “12,3,5,125”; string[] b = a.Split(’,’); b中的值是 b[0] = 12 b[1] = 3 b[2] = 5 b[3] = 125

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,962
精华内容 784
关键字:

vba字符串赋值

友情链接: nijc.zip