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)
&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)
这是一般的想法.&通过使用数组避免尽可能多地使用,您应该看到一些显着的性能改进.
| 归档时间: |
|
| 查看次数: |
5279 次 |
| 最近记录: |