2016-04-30 22 views
1

私はすべてのカンマをカウントするには「」私はloopカウント選択中のすべてのコンマまたは選択したテキスト

私の質問は、私は,カウントはどうすればよいです実行するIntegerとしてカウントを使用します。画像を以下を示して:

私は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

をコンマをカウントする別の方法を与えるだろう - と答えを取得されて。しかし、あなたは、コメント、アップボトム、または "the"答えの印として、これらの回答に対するフィードバックを提供していません。あなたは[ヘルプ]のサイトのガイドラインを読むのに少し時間を取るべきでしょう。この特定の質問は、あなたの努力の研究や兆候がありません。 –

+0

@CindyMeister指摘に感謝します。私はこのサイトを初めて利用しているので、私はガイドラインを読むでしょう。一方、私は問題を解決するのに役立つすべての回答に印を付け、さらに注意を必要とするものを残しました。あなたは私のプロフィールにアクセスして、**アップワイヤー**を**「答え」**と記された答えにチェックすることができます。と申し訳ありません言語:英語は私の母国語ではありません。 –

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

そして、あなたはより単一のコード行をしたい場合は、KyloRenとシンディマイスターへ

x = UBound(Split(myRange, ",")) 
+0

私は 'Range'とあなたの与えられたコード(元の質問を編集しました)を追加することができ、' Split'と 'Ubound'についてよく分かりません。あなたはいくつかの情報を追加できますか? –

+0

あなたはどれくらいの範囲を決定しようとしていますか? " –

+0

お世話になりました。 私はあなたの意見を得て、私のために最終回答を掲載しました。 –

0

おかげで、今私はselection.text,をカウントするsplitUboundを使用することができます。

with x = Split(myRange, ",") 

あなたがxをしたいと思い、その後の文であるため、

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

あなたのコードがstringタイプのよう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 object into、Selection選択範囲は既にあります(here参照)

  • あなたはxVariant変数を必要としないどちらも、上で見たように、Split()機能と直接(その最初の引数として配列を期待する)UBound()機能を供給し、ちょうど配列を返しません!

最後に、私はあなたがここ数日かなりの数の質問をしてきた範囲で

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

    Debug.Print count 
End Sub 
+0

あなたの答えは非常に思慮深いです。同じ仕事をする最も簡単な方法。 –

+1

ようこそ。あなたが私の答えを見つけたら、あなたはそれを投票することができます...ありがとう! – user3598756