• ベストアンサー

ワードVBAで、段落のタブの数を数えたい。

ワード2002使用です。 2段落目に複数のタブが入力されています。 ワードVBAで、選択した段落のタブの個数を数えたい。 sub タブ() Dim tab数 As Integer ActiveDocument.Paragraphs(2).Range.Select tab数 = Selection.Paragraphs.tabs.Count←ここがよくわかりません msgbox tab数 end sub よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • masa_019
  • ベストアンサー率61% (121/197)
回答No.1

こんにちは。 勘違いしているかも知れませんが、 Sub タブ() Dim tab数 As Integer Dim Character For Each Character In ActiveDocument.Paragraphs(2).Range.Characters If Character = vbTab Then tab数 = tab数 + 1 End If Next MsgBox tab数 End Sub こういうことでしょうか?

ken123
質問者

お礼

masa_019様早速のご回答ありがとうございました。 まさしくご回答いただいた通りで、適正な処理ができました。 あれこれこちらも調べて、 sub タブ() Dim i As Integer Dim inttabpos As Integer i = 0 inttabpos = 0 Do inttabpos = InStr(inttabpos + 1, para.Range.Text, vbTab) If inttabpos > 0 Then i = i + 1 End If Loop While inttabpos <> 0 And i <= 60 ’最大文字数を想定 end sub instr関数を使っても処理できました。(参考書から) ありがとうございました。今後ともよろしくお願いします。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

ワードVBAは自信ありませんが、下記やってみてください。 少数例では正しいよう。「あいまい検索」のチェックをはずし、特殊文字^tでの検索をして、「次を検索」を繰り返し、回数を数えて、下記結果と比べてください。 Sub tabc() Dim tab数 As Integer Dim tf As Boolean 'ブール型 ActiveDocument.Paragraphs(2).Range.Select MsgBox Selection.Text n = 0 Selection.Find.ClearFormatting '検索条件設定 With Selection.Find .Text = Chr(9) .Forward = True .Wrap = wdFindContinue End With '------------------ '繰り返すのはここから tf = Selection.Find.Execute '検索実行:成功したらTRUE Do While tf = True 'tf = True 間、Do~Loop間を繰り返す n = n + 1 With Selection.Find .Execute FindText:=Chr(9) tf = .Execute End With Loop tab数 = n MsgBox tab数 End Sub

ken123
質問者

お礼

imogasi様早速のご回答ありがとうございます。 繰り返し処理の基本ですね。なかなか基本も身につかずいつも申し訳ございません。 vbtabは検索でもChr(9)が使えるのも初めて知りました。 がんばって勉強します。 今後ともよろしくお願いします。

関連するQ&A