我的代碼需要幫助,該代碼顯示一個輸入框,用戶輸入一個名稱,然后代碼拆分名稱并計算顯示以下內容的名稱:

Sub ParseName()
Dim Name As String
Dim Count As Integer
Dim Cell As Object
Dim n As Integer
Count = 0
Name = InputBox("Enter First Name, Middle Name, and Last Name")
If Name = "" Then
For Each Cell In Selection
n = InStr(1, Cell.Value, Name)
While n <> 0
Count = Count 1
n = InStr(n 1, Cell.Value, Name)
Next Cell
MsgBox Count & " Occurrences of " & Name
End If
End Sub
uj5u.com熱心網友回復:
絕對地。您可以拆分名稱,但這可能無濟于事。VBA 的拆分不允許您拆分單個字符,AFAIK,因為如果您將它們拆分為特定的分隔符,其他語言可能會這樣做。因此,您可以使用 MID 遍歷字符以查看每個字母是否為空格。
有一種方法無需任何拆分或回圈。您可以只替換空格并獲取剩余內容的長度。
Len(Replace(Name, " ", ""))
其中 REPLACE 只是用另一個字串替換一個字串,在這種情況下,將所有空格都替換為空,而 LEN 只計算字串中的字符。
這是使用此方法重寫的代碼,洗掉了不必要的代碼和變數。我還會更改 Name 變數,因為我相信這是 VBA 中的保留字。它會讓你這樣做,但你可能會影響一些現有的行為。出于這個特定目的,使用獨立函式來獲取字符數是一些事情
Sub ParseName()
Dim fullName As String, charCount As Integer
fullName = InputBox("Enter First Name, Middle Name, and Last Name")
If fullName <> "" Then
charCount = Len(Replace(fullName, " ", ""))
MsgBox fullName & " has " & charCount & " characters"
End If
End Sub
但是請記住,您可能不想計算許多其他字符代碼。制表符、換行符、許多空白字符中的任何一個。非字符符號。那種性質的東西。
此外,此代碼不檢查字串是否包含字母,或者用戶輸入是否包含三個名稱,或者它的格式是否為 First Middle Last。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/511447.html
標籤:擅长vbaexcel公式
