
這是我的文本代碼:
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
在這里完成初學者:
- 我的if有什么問題?
- 是否有可能向我展示 excel 中的確切問題?
- 文本僅以紅色突出顯示 - 如果我將滑鼠懸停在上方,則不會給出錯誤訊息。
- 這是我對 if 結構的知識來源:Support Microsoft - 這對我來說是錯誤的檔案型別嗎?
現在在您的幫助下得到了解決方案(感謝所有回復的人) - 我想從字串中提取一個帶小數的數字:
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
uj5u.com熱心網友回復:
“If”行的寫法類似于 Excel 公式。這就是基本的樣子。
If IsNumeric(Val) Or Val = "," Then tmp = tmp & Mid(Text, i, 1)
紅色文本是語法錯誤。如果您轉到“除錯”選單并單擊“編譯 VBA 專案”,您將收到錯誤訊息。
您包含的鏈接適用于在單元格中鍵入的函式。您需要 VBA 參考。這是 MS 參考資料的鏈接,但一本像樣的書會讓你的生活更輕松。只需搜索“Excel VBA”。
https://docs.microsoft.com/en-us/office/vba/api/overview/
uj5u.com熱心網友回復:
你可以嘗試這樣的事情:
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://www.uj5u.com/yidong/452978.html
標籤:擅长 vba excel-2010
上一篇:用熊貓讀取加密檔案
