String Excel VBA函数处理分隔符
我需要有关创建Excel VBA函数的帮助 字符串变量“mystring”可以有三种不同的格式 第一个是普通的文本字符串。这个案子不需要什么。 其他两个版本需要处理标记和href链接,以便在以后的html输出中使用 Excel示例: 在XSL的帮助下,我可以处理不同的href属性 我认为这可以在VBA中使用:String Excel VBA函数处理分隔符,string,excel,vba,delimiter,String,Excel,Vba,Delimiter,我需要有关创建Excel VBA函数的帮助 字符串变量“mystring”可以有三种不同的格式 第一个是普通的文本字符串。这个案子不需要什么。 其他两个版本需要处理标记和href链接,以便在以后的html输出中使用 Excel示例: 在XSL的帮助下,我可以处理不同的href属性 我认为这可以在VBA中使用: If mystring = "myLink" Then xmf.writeline "<mytag mystringName=""" & mystring & """
If mystring = "myLink" Then
xmf.writeline "<mytag mystringName=""" & mystring & """href= """ & href & """ > """
End If
希望您能帮助我使这个函数(或其他函数)工作
非常感谢。如果我理解正确,您的字符串可能有1或3个部分。我将使用一个分隔符(一个或多个字符)分隔这些部分,并删除单引号,如下所示:
'Using a semicolon
mystring = "This is a headline"
mystring = "myLink;some/link.html;This is also a headline"
mystring = "noLink;#;This is another headline"
Sub test()
Dim link1 As String
link1 = makeLink("This is a headline")
link2 = makeLink("This is also a headline", "some/link.html")
link3 = makeLink("This is another headline", "#")
End Sub
然后,您编写的函数可以如下所示:
公共函数GetXML(str作为字符串)作为字符串
将mylinkPos设置为整数,将nolinkPos设置为整数
Dim remainderString作为字符串,nextDelimiterPos作为字符串
Dim href作为字符串,标题作为字符串
mylinkPos=InStr(str,“mylink;”)
nolinkPos=InStr(str,“nolink;”)
如果mylinkPos=0和nolinkPos=0,则
GetXML=“”
退出功能
如果结束
remainderString=Mid(str,8)
如果nolinkPos>0,则
headline=remainderString
href=“#”
其他的
nextDelimiterPos=InStr(余数字符串,“;”)
href=Left(remainerString,nextDelimiterPos-1)
headline=Mid(剩余字符串,下一个delimiterpos+1)
如果结束
GetXML=“”
端函数
当然,使用正则表达式会更简单、更优雅,您可以通过从
Tools->References
添加对MicrosoftVBScript正则表达式5.5
的引用来使用正则表达式,为什么不编写一个包装函数来处理逻辑:
Private Function makeLink(linkText As String, Optional linkUrl As String)
Dim linkUrlText As String
If (Len(Trim(linkUrl)) > 0) Then
linkUrlText = " href=" & """" & linkUrl & """"
End If
makeLink = "<mytag mystringName=""" & linkText & """" & linkUrlText & " />"
End Function
这是一个比我的更好的解决方案。
'Using a semicolon
mystring = "This is a headline"
mystring = "myLink;some/link.html;This is also a headline"
mystring = "noLink;#;This is another headline"
Public Function GetXML(str As String) As String
Dim mylinkPos As Integer, nolinkPos As Integer
Dim remainderString As String, nextDelimiterPos As String
Dim href As String, headline As String
mylinkPos = InStr(str, "mylink;")
nolinkPos = InStr(str, "nolink;")
If mylinkPos = 0 And nolinkPos = 0 Then
GetXML = "<mytag mystringName=""" & str & """ />"
Exit Function
End If
remainderString = Mid(str, 8)
If nolinkPos > 0 Then
headline = remainderString
href = "#"
Else
nextDelimiterPos = InStr(remainderString, ";")
href = Left(remainderString, nextDelimiterPos - 1)
headline = Mid(remainderString, nextDelimiterPos + 1)
End If
GetXML = "<mytag mystringName=""" & headline & """ href=""" & href & """ />"
End Function
Private Function makeLink(linkText As String, Optional linkUrl As String)
Dim linkUrlText As String
If (Len(Trim(linkUrl)) > 0) Then
linkUrlText = " href=" & """" & linkUrl & """"
End If
makeLink = "<mytag mystringName=""" & linkText & """" & linkUrlText & " />"
End Function
Sub test()
Dim link1 As String
link1 = makeLink("This is a headline")
link2 = makeLink("This is also a headline", "some/link.html")
link3 = makeLink("This is another headline", "#")
End Sub