使用预制的Stringbuilder类

Cod*_*ice 4 excel vba excel-vba

我正在尝试学习如何在VBA中使用stringbuilder函数,但是在VBA中查找有关如何使用它们的资源时遇到了问题.我可以使用一些帮助来使用预制的stringbuilder类.

我知道这些潜艇中的每一个都在编写最终代码方面发挥了一定作用.例如,我已经看到了其他使用的示例,"string.append"但我不确定它是否在这种情况下是如何工作的.我可以使用一些洞察力来了解如何使用此代码.请帮忙!

我理解的最好方法是,如果有人可以使用这个示例stringbuilder类将几行示例代码放在一起.谢谢!!

Private m_arrBuffer
Private m_strDelimiter
Private Sub Class_Initialize()
    m_arrBuffer = Array()
    m_strDelimiter = “”
End Sub

Private Sub Class_Terminate()
    m_arrBuffer = Empty
End Sub

Public Property Get Delimiter()
    Delimiter = m_strDelimiter
End Property

Public Property Let Delimiter(strDelimiter)
    m_strDelimiter = strDelimiter
End Property

Public Sub Append(strValue)
    ReDim Preserve m_arrBuffer(UBound(m_arrBuffer) + 1)
    m_arrBuffer(UBound(m_arrBuffer)) = strValue
End Sub

Public Sub AppendLine(strValue)
    Me.Append strValue & vbCrLf
End Sub

Public Sub Compact()
    If Not Me.Delimiter = “” Then
        strOriginalDelimiter = Me.Delimiter
        Me.Delimiter = “”
    End If
    strTemp = Me.ToString
    m_arrBuffer = Array()
    Me.Append strTemp
    Me.Delimiter = strOriginalDelimiter
End Sub

Public Function ToArray()
    ToArray = m_arrBuffer
End Function

Public Function ToString()
    ToString = Join(m_arrBuffer, m_strDelimiter)
End Function
Run Code Online (Sandbox Code Playgroud)

Bon*_*ond 5

&VBA中的字符串连接()连接速度非常慢,因此如果您需要组合大量字符串,通常会使用像这样的"stringbuilder"类来加快进程.

一般的想法是使用a Array()来存储单个字符串组件,然后在需要时使用该函数将所有字符串组合一次Join().在添加字符串时自动调整数组大小.许多人使用一个"GrowBy"功能(虽然这个没有)在达到数组限制时通过静态大小或因子来增长数组.这也可以提高性能,因为调用ReDim Preserve每个字符串插入可能会造成损失.

要回答您的问题,请假装您需要构建HTML文件的一部分.您可以像这样使用显示的字符串类:

Dim sb
Set sb = New StringBuilder      ' Guessing here. You haven't shown the class name.
sb.Append "some string"
sb.Append "another string"
sb.Append "a third string"
....
sb.Delimiter = "<br>"
myHtmlFile.Write sb.ToString()
Run Code Online (Sandbox Code Playgroud)

会打印以下内容:

some string<br>another string<br>a third string
Run Code Online (Sandbox Code Playgroud)

这是一般的想法.&通过使用数组避免尽可能多地使用,您应该看到一些显着的性能改进.