【问题标题】:How to separate a string and counting the number of characters in a string minus the spaces如何分隔字符串并计算字符串中的字符数减去空格
【发布时间】:2022-10-24 02:36:44
【问题描述】:

我的代码需要帮助,该代码显示一个输入框,用户输入一个名称,然后代码拆分名称并计算显示以下内容的名称:

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

【问题讨论】:

  • 在代码行的哪里?
  • 我正在尝试获取一个使用输入框的代码,该输入框要求用户输入全名。示例:杰夫·艾伦·乔恩斯。从那里我需要将名称拆分为第一个、中间和最后一个。从那里它需要计算字符减去空格并显示如上图所示的 MsgBox。这计算全名的字符数并计算名字和姓氏的字符。
  • 我希望这是有道理的
  • 不,这是严格的 VBA 纯编码,没有 excel 单元格操作。
  • 我希望这会有所帮助,因为我现在有点失落

标签: excel vba excel-formula


【解决方案1】:

绝对地。您可以拆分名称,但这可能无济于事。 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 格式。

【讨论】:

  • 我很抱歉克里斯,这些类型的功能超出了我的想象。但是谢谢你的帮助。我现在只使用 Subs 并使用 for 循环。
  • 函数与 sub 完全一样,只是它返回一个值。我使用的唯一控制结构是 FOR 循环。我已经编辑了答案。看看它。
  • 非常感谢克里斯,代码运行完美,但代码比我能做的要高级一点,哈哈,但谢谢你的帮助
  • 回去再看一遍,实际上我一直在编辑它。只是没想到你这么快就读完了。顶部的代码应该非常简单。
  • 对于那个 If 语句,实际发生了什么。还有一种方法可以在没有功能选项的情况下运行代码吗?我还没有到 VBA 的那部分
猜你喜欢
  • 2013-12-04
  • 2012-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多