VBA中的Trim()和Trim $()有什么区别?

nik*_*iko 13 excel vba trim excel-vba

trimtrim$vba有什么区别?今天我偶然在vba中使用了left和trim函数,编译器说cant find project or library

当我用谷歌搜索它时,在论坛上我发现用户使用了这些

 vba.trim("string")
Run Code Online (Sandbox Code Playgroud)

他回答用vba作为函数的前缀.并且令人惊讶的是它也在我的电脑上工作.但我找到了这些功能

 trim and trim$ 
 left and left$ 
 leftb and leftb$
Run Code Online (Sandbox Code Playgroud)

我想知道什么是修剪和修剪$.我想找到差异因此我开始谷歌它但结果是修剪忽略$ alphabet.

我只是很想知道它.我怀疑修剪是vba功能和修剪$是excel表功能.但我们必须Application.worksheetfunction使用excel功能吗?任何人都可以区分修剪和修剪$.

bre*_*tdj 21

虽然Issun已按照要求回答了您的问题,但我有足够的细节我希望发布以提供进一步的答案而不是评论.

该字符串的版本显著快〜取决于从我的测试历年的数据类型约10-30%.虽然这通常不明显,但在大型数据集上运行时,性能会有所不同.所以对我来说,使用字符串而不是变体版本是明智的选择.

下面的示例适用于字符串,因此它在此范围的较高端显示速度优势

我在这两个公共插件中都将这些函数与变量数组结合使用,因为这些程序通常用于整个工作表甚至整个工作簿

对于您的问题,此链接是一个很好的参考

  1. 比较vbBinaryCompare而不是vbTextCompare
  2. 优化空字符串
  3. 更换前测试
  4. 使用内置的常量,VbNullString比快"",虽然两者都将错过含有细胞',而IsEmpty发现这一点,
  5. 优化循环(AND分成两个单独的IFs以提前逃脱)
  6. 优化如果测试首先返回最常见的布尔结果而不是通过Else路径(即False测试可能比更合适True)
  7. Mid$在作业的左侧使用.来自VBA的隐藏功能

    Sub QuickTimer1()
    Dim lngRow As Long
    Dim dbTime As Double
    Dim strSample As String
    Dim strShort As String
    strSample = "random string"
    dbTime = Timer()
    For lngRow = 1 To 50000000
        strShort = Left$(strSample, 6)
    Next lngRow
    MsgBox Timer() - dbTime
    End Sub
    
    Sub QuickTimer2()
    Dim lngRow As Long
    Dim dbTime As Double
    Dim strSample As String
    Dim strShort As String
    strSample = "random string"
    dbTime = Timer()
    For lngRow = 1 To 50000000
        strShort = Left(strSample, 6)
    Next lngRow
    MsgBox Timer() - dbTime
    End Sub
    
    Run Code Online (Sandbox Code Playgroud)


aev*_*nko 9

Trim是变体版本.如果在字符串上使用它,则需要进行不必要的转换.

Trim$是字符串版本.如果您在字符串上使用它,请使用此选项.

有趣的旁注:Application.WorksheetFunction版本与TrimVBA的Trim功能不同.

值得注意的是,Left/Left $,Mid/Mid $,Right/Right $也有变体/字符串版本.在经常循环或使用它们的函数中,如果使用变体版本,你会发现性能受到影响,虽然现代PC并不是很大,但是当你知道它会导致额外的步骤时,不做某事仍然是好的做法.你不需要.


Jus*_*elf 5

trim接受变量作为参数,同时trim$接受字符串.

使用trim $有一些性能优势(因为你没有从变种转换),但你可能不会注意到它们.

编辑:

我通过检查对象浏览器来解决这个问题.当您在VBA编辑器中时,按F2键可以搜索功能并更熟悉框架.