- ベストアンサー
Cell内の一部を指定する方法(Word VBA)
Cell内の一部を指定する方法(Word VBA) Word VBAで、特定のCellの中の一部だけを指定するには、どうすればいいのでしょうか。 たとえば、ある表のCell(1, 2)の6~10文字目を指定して、そこだけを太字にするために、 Set Date1 = Table1.Cell(1, 2).Range(Start:=5, End:=10) としても、RangeメソッドはCellに使えないようなので、エラーになってしまいます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> RangeメソッドはCellに使えないようなので WordのVBA編集画面のオブジェクトブラウザで確認しますと、 Document.Range メソッド → Start:, End: で範囲を指定できる Cell.Range プロパティ(メソッドではない)→ Start: End: の範囲指定はできない 事がわかります。ご指摘の通りです。 それで、 Dim 範囲 As Range Set 範囲 = ThisDocument.Tables(1).Cell(2, 3).Range Debug.Print 範囲.Start; 範囲.End などとしてみますと、この Range はセルではなく、 セクションの頭からの位置として、Start, End を持っていることがわかります。 そこで Set 範囲 = ThisDocument.Tables(1).Cell(2, 3).Range 範囲.End = 範囲.Start + 10 範囲.Start = 範囲.Start + 6 - 1 ' ★注意★ -1 が必要 範囲.Font.Color = wdColorRed Debug.Print 範囲.Text としてみると、うまくいきました (ここでは太字ではなく赤字にしていますが、おなじことです)
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こういうことでしょうか。 文字数が足りなければ、その文字列最後まで選択します。 Sub Test1() Dim i As Long, j As Long, k As Long Dim buf As String Const iSTART As Integer = 5 'スタート Const iEND As Integer = 10 '終わり With Tables(1).Cell(1, 2).Range 'セル .Select '文字カウント buf = Selection.Text For i = iSTART + 1 To Len(buf) If AscW(Mid(buf, i, 1)) >= 33 Then k = k + 1 Else Exit For End If Next If k >= (iEND - iSTART) Then j = iSTART ElseIf k > 0 Then j = k Else Exit Sub End If Selection.MoveLeft Unit:=wdCharacter, Count:=1 Selection.MoveStart Unit:=wdCharacter, Count:=iSTART Selection.MoveRight Unit:=wdCharacter, Count:=j, Extend:=wdExtend Selection.Font.Bold = True Selection.MoveLeft Unit:=wdCharacter, Count:=1 End With End Sub
お礼
ありがとうございます。しかし、ちょっとややこしそうですね。
お礼
ありがとうございます。これでうまく行きました。