
下面是我的代码作为文本:
Function NurZahl(ByVal Text As String) As Long
Dim i%, tmp
Dim Val As String
For i = 1 To Len(Text)
Val = Mid(Text, i, 1)
If(OR(IsNumeric(Val),Val=","),TRUE, FALSE) Then tmp = tmp & Mid(Text, i, 1)
Next i
NurZahl = tmp
End Function完整的初学者:
现在在您的帮助下得到了解决方案(感谢所有答复者)--我想从字符串中提取一个十进制数:
Function CleanString(strIn As String) As String
Dim objRegex
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
.Global = True
.Pattern = "[^\d,]+"
CleanString = .Replace(strIn, vbNullString)
End With
End Function发布于 2022-03-30 13:52:28
"If“行的编写方式类似于Excel公式。这就是基本应该是什么样子。
If IsNumeric(Val) Or Val = "," Then tmp = tmp & Mid(Text, i, 1)红色文本是语法错误。如果您转到“调试”菜单并单击“编译VBA项目”,您将得到错误消息。
包含的链接用于输入到单元格中的函数。你需要一个VBA参考。这里有一个链接到MS的参考,但一本不错的书会使你的生活更容易。只需搜索"Excel“即可。
发布于 2022-03-30 13:46:12
你可以试试这样的东西:
Function NurZahl (ByVal MyText As String) As Long
' Set up the variables
Dim i as Integer
Dim tmp as String
Dim MyVal As String
' Start tmp with an empty string
tmp = ""
' Loop through each character of the input MyText
For i = 1 To Len(MyText)
' Read the character
MyVal = Mid(MyText, i, 1)
' Check whether the character is a number or a comma
' and take reasonable action
If IsNumeric(MyVal) or MyVal = "," then
tmp = tmp & Mid(MyText, i, 1)
End if
Next i
NurZahl = tmp
End Function你必须改变上面的代码来做你想做的事情。上面的例子是展示如何编写VBA代码。
在VBA编辑器中,当您在一行上看到红色时,意味着编辑器检测到了一些问题。
如果要用Excel编写此函数,则通常在以下单元格中使用该函数:=NurZahl(A1)
https://stackoverflow.com/questions/71678088
复制相似问题