1

我想计算仅出现在选定文本中的所有逗号“,”之后我将使用 Count asInteger来运行loop

我的问题是我如何计算,如下图所示:

我不知道如何使用splitubound。以下代码有什么问题?

Sub CountComma()
Dim x As String, count As Integer, myRange As Range

Set myRange = ActiveDocument.Range(Selection.Range.Start, Selection.Range.End)

 x = Split(myRange, ",")
  count = UBound(x)

  Debug.Print count

End Sub
4

3 回答 3

4

一个简单的拆分就可以了。

x = Split("XXX,XXX,XXX,XXX,XX,XX", ",")
  Count = UBound(x)
  Debug.Print Count

B/c 数组从零开始,您可以按Ubound原样进行编号。

编辑:使用range.

x = Split(Range("A1").Value, ",")

分解代码。

Split("A string value","Delimiter to split the string by")

如果你想要一行代码,

x = UBound(Split(myRange, ","))
于 2016-04-30T04:46:33.870 回答
2

x您的代码在变量 as类型的初始声明语句中是错误的string,因为在后续语句中

with x = Split(myRange, ",")

你想要x保存函数的返回值,Split()它是一个数组(见这里),因此Variant类型

所以你必须使用

Dim x As Variant

但是您可以按如下方式简化代码

Option Explicit

Sub CountComma()
  Dim count As Integer

  count = UBound(Split(Selection, ","))
  Debug.Print count   

End Sub

自从:

  • 你不需要任何Range类型变量来存储Selection对象,已经Selection是选定的范围(见这里

  • 你也不需要这个x Variant变量,UBound()直接用函数提供函数(它需要一个数组作为它的第一个参数)Split(),正如我们在上面看到的,它只返回一个数组!

最后我会给出一种计算范围内逗号的替代方法

Sub CountComma()
  Dim countAs Integer
  count = Len(Selection) - Len(Replace(Selection, ",", ""))

  Debug.Print count
End Sub
于 2016-04-30T06:46:59.370 回答
0

感谢 KyloRen 和 Cindy Meister,现在我可以使用splitand来Ubound计数,selection.text

以下是工作代码:

    Sub Count_Words()
        Dim WrdArray() As String, myRange As String

        myRange = ActiveDocument.Range(Selection.Range.Start, Selection.Range.End)

        WrdArray() = Split(myRange, ", ")

        MsgBox ("Total , in the string : " & UBound(WrdArray()))

    End Sub
于 2016-04-30T06:44:05.177 回答