• ベストアンサー

WORD VBA 表の複数行選択を教えてください

検索をしてみたのですが、うまく見つけられません。 ご存知の方がいらっしゃいましたら教えてください。 ActiveDocument.Tables(1).Rows(1).Select これですと文書上1つ目の表の1行目が選択されますが、 たとえば1~3行目を選択したい場合はどうすればいいのでしょうか? よろしくお願いいたします。

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

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

ワードのSelectからrangeへ広げる考え方からすると マクロの記録で出る Sub test01() ActiveDocument.Tables(1).Rows(1).Select Selection.MoveDown Unit:=wdLine, Count:=2, Extend:=wdExtend Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend end Sub ワードの定めた単位(例Unit:=wdLine)で広げていく(Extend:=wdExtend)ような感じで 実現するのかなと思う。 エクセルのようにRange(Cells(・・),Cells(・・))やEntirerowはできないようです。 Sub test07() ActiveDocument.Tables(1).Cell(Row:=1, Column:=1).Select Selection.EndKey Unit:=wdRow, Extend:=True Selection.MoveDown Unit:=wdLine, Extend:=True Selection.MoveDown Unit:=wdLine, Extend:=True End Sub もどうですか。

sugar_donut
質問者

お礼

レスありがとうございました。 マクロの自動記録で、私も似たようなコードは得られていたのですが、 普通の操作では行/列選択は簡単にできますので、 まさかこの冗長なコードを使わなければダメだとは 想像もしていませんでした。 "Excelのようにはいかない"という(Wordなんですから当然ですよね)、 考えてみれば一番欲しかった答えもいただけたように思います。 ありがとうございました。

その他の回答 (1)

  • AlexSuns
  • ベストアンサー率67% (78/115)
回答No.1

実験してみました もっとスマートな方法があるのかな?   Dim myRange As Range   Dim rowSelect As Integer      rowSelect = 3      Set myRange = ActiveDocument.Tables(1).Range   myRange.SetRange 0, (rowSelect * ActiveDocument.Tables(1).Columns.Count) + rowSelect   myRange.Select

sugar_donut
質問者

お礼

レスありがとうございました。 教えていただいたコードを元に、私も試してみました。 残念ながら、セルに文字が入ると結果が異なるので 今回の私のケースには当てはまらなかったのですが、 SetRangeというメソッドも知らなければ、 使い方もわからなかったので、とてもいい勉強になりました。 これって作りたての表に対しては最強ですね。 見た目もとてもスッキリしていますし・・・。 ありがとうございました。

関連するQ&A