Подсчитать всю запятую в выделенном или выделенном тексте
Я хочу посчитать все запятые ",", которые встречаются только в выделенном тексте, после чего я буду использовать Count как Integer
запустить loop
Мой вопрос, как мне считать ,
как показано на рисунке ниже:
Я не знаю, как использовать split
а также ubound
, что не так со следующим кодом?
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
3 ответа
Простое разделение будет работать.
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, ","))
Ваш код неверен в первоначальной декларации x
переменная с 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
Благодаря KyloRen и Синди Мейстер, теперь я могу использовать split
а также 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