【问题标题】:Count all Comma In Selection or selected text计算所选内容或选定文本中的所有逗号
【发布时间】:2016-08-25 08:14:36
【问题描述】:

我想计算仅出现在选定文本中的所有逗号“,”之后我将使用 Count as Integer 来运行 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

【问题讨论】:

  • 过去几天你一直在问很多问题 - 并且得到了答案。但是您没有以 cmets、upvotes 或标记为“the”答案的形式对这些答案提供任何反馈。您或许应该花点时间阅读help center 中的网站指南... 这个特定问题缺乏您的任何研究或努力迹象。
  • @CindyMeister 感谢您的指出。我是这个网站的新手,我会阅读指南。另一方面,我标记了所有帮助我解决问题的答案,并留下了需要更多关注的答案。您可以访问我的个人资料并检查标记为 “答案” 的那些答案的 upvotes。对不起语言:) 英语不是我的母语。
  • 代码示例是一种可能的方法,应该只搜索选择/范围。如果不是,则可能是某些“查找”设置存在问题。但是,KyloRen 发布的答案是获取信息的最有效方法,也是我建议的方法。
  • @CindyMeister 看!有时我不添加努力的迹象,因为我想看看其他人以最有效的方式在做什么。并感谢您帮助我

标签: vba ms-word word-2007 word-2003


【解决方案1】:

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

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, ","))

【讨论】:

  • 我设法添加了 Range 和您给定的代码(编辑了原始问题),结果我对 SplitUbound 知之甚少。你能补充一些信息吗?
  • 感谢您的帮助。我明白了你的意思,代表我发布了最终答案。
  • 为了改变答案。我来这里不是为了获得所有荣誉。我刚刚选择了工作代码作为最终答案。
  • 别担心,我给了你一票,因为我认为你已经尝试并成功理解了答案。干杯
【解决方案2】:

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

with x = Split(myRange, ",")

您希望x 保存Split() 函数的返回值,该函数是一个数组(参见here),因此是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 已经是选定的范围(请参阅here

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

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

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

  Debug.Print count
End Sub

【讨论】:

  • 谢谢你的回答很周到。做同样工作的最简单方法。
  • 不客气。如果您发现我的回答有用,您可能想要投票...谢谢!
【解决方案3】:

感谢 KyloRen 和 Cindy Meister,现在我可以使用 splitUboundselection.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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 2017-03-28
    • 1970-01-01
    相关资源
    最近更新 更多