2016-04-30 87 views
1

我想算只有我會用算作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 
+2

你已經問了不少問題,在過去的幾天裏 - 並且得到了答案。但是您沒有以評論,讚揚或標記爲「答案」的形式對這些答案提供任何反饋。您應該花點時間閱讀[幫助]中的網站指南......這個特定的問題缺乏任何研究或您的努力的跡象。 –

+0

@CindyMeister謝謝指出。我是這個網站的新手,我會閱讀指南。另一方面,我標出了所有幫助我解決問題的答案,並留下了需要更多關注的答案。你可以訪問我的個人資料,並檢查** upvotes **這些答案被標記爲**「答案」**。和抱歉的語言:)英語不是我的母語。 –

+2

代碼示例是一種可能的方法,應僅搜索選擇/範圍。如果不是,那麼這可能是某些查找設置的問題。然而,KyloRen發佈的答案是獲取信息的最有效方法,也是我所建議的方法。 –

回答

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

我設法添加'範圍'和你給定的代碼(編輯原來的問題),結果我對「Split」和「Ubound」瞭解不多。你能添加更多的信息嗎? –

+0

你試圖確定有多少「,」在那裏? – 2016-04-30 06:45:56

+0

感謝您的幫助。 我明白你的意思,代表我發表最終答案。 –

0

感謝KyloRen和辛迪的明星,現在我可以用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 
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

  • 你不需要xVariant變量都不是,直接,正如我們上面看到的Split()功能餵養UBound()功能(該功能預計數組作爲其第一個參數),只返回一個數組中!

最後我給了計算逗號的替代方法的範圍

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

    Debug.Print count 
End Sub 
+0

謝謝你的回答非常周到。做同樣工作的最簡單的方法。 –

+1

不客氣。如果您發現我的答案有用,您可能需要對它進行投票...謝謝! – user3598756