
Word上に挿入した表中でに記載されている文章での選択している行の削除を行いたいと考えています。
With Selection
.StartOf wdLine
.EndOf wdLine, wdExtend
.Delete
End With
上記のプログラムで、途中の行は期待通りに削除されます。
しかし、表のセル中の最終行を選択した状態で上記を実行すると、セル内が全て選択され、消えてしまいます。
最終行を選択した状態では、最終行のみを削除したいのですが、どのように指定すればよいでしょうか?
使用している環境はWord2003です。
教えてください。よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
いろいろ検討してみたのですが、具体的な案が浮かばなかったので回答
を控えていましたが、他の回答者によるアイデアが出るように、簡単な
アドバイスをしますね。
質問で示したマクロは行頭にカーソルがあって、[ Shift+End ]キーを
押して[ Delete ]キーで削除したときと同じ動作です。
このとき、セルの最後にある[セルの終了記号](End of cell marker)を
選択するとセル全体を選択することと同じになります。
単純に、行にあるテキストを一行分削除するだけなら、
With Selection
.EndOf wdLine
.StartOf wdLine, wdExtend
.Delete
End With
のように、行末(段落記号を含まない)から行頭を選択して削除すること
で、どの行でも問題なく削除できます。このとき行末に段落記号がある
場合は残ってしまいますので、[段落記号]の場合と[セルの終了記号]の
場合の条件で指定範囲の向きを指定できるかと思ったのですが、私では
調べてもわかりませんでした。
セル全体が選択されたかどうかを判断する条件にする方法も、検討材料
としてあるとは思いますが、よくわかりませんでした。
Wendy02さんのマクロだと段落の数と段落ごとの削除になるので、表内
の段落にある特定行を削除することには向かないと思います。
条件として、行ごとに段落で改行してあるような複数行=複数段落での
指定している場合なら、有効なものだと思います。
具体的なマクロを提示できませんが、私なりのアドバイスも参考にして
ください。
この回答への補足
回答ありがとうございます!
[セルの終了記号](End of cell marker)の存在を知りませんでした・・・原因はコレですか!
行の選択で、End、Shift+HomeとHome、Shift+Endに違いは無いと考えていましたが・・・改めます。
[セルの終了記号](End of cell marker)を意識して各行を選択し、キーボードでEnd、Shift+Home、Deleteを行ってみたところ、全ての行で意図通りの削除ができることを確認しました。
セル内の最終行でEnd、Shift+Homeを行っても問題ありませんでした。
本質問の直接的な原因が判明したのですっきりしました。
これで、やりたいことはできそうです。
No.6
- 回答日時:
こんばんは。
まず、大事なことは、ご質問者さんがら、どのようにして、セルに入力している、または作っているか、ということです。回答者が、自分の想定内であれこれ空回りをしてもしょうがないと思います。
私のコードがうまく行かなかったのは、あくまでも、こちらの想定した内容とは違うということです。想定上で生み出されたコードが、うまく出来ないから、コードがダメだということではないはずです。
最終的には、ループして、セル全部を処理するということを考えると、セルを指定していくことを想定しなければならないように考えています。問題は、あくまでも、セル内の行の区切りの問題です。また物理的に区切られていないかもしれません。
どうやら、先ほど、もう一つのご質問のほうが解決したようで、これも同質の内容のようですから、こちらのほうも確実な線は見えてくるような気がします。
私のコードは、以下の条件下で作れられています。
こちらで成功しているのは、
たとえば、
--------セルの中
ABC↓
EFG↓
HIJ↓
KLM↓・
--------
(添付の図を参照)左は可能ですが、右では出来ません。)
そして、カーソルを、セル内に指定した場合という条件です。間違いないと思ったからコードを掲示したわけですが、どうやら、想定内のものではないようにも思えるのです。
なお、他に、セル幅と比較して行の範囲を取るというものですが、それは、なかなか難しいかもしれません。出来れば、物理的にカーソルを動かすのだけは避けたいと思います。
enunokokoroさん、私に限らず、よほど、相手が凡ミスでない限りは、他人のコードのダメ出しはやめましょう!
>Wendy02さんのマクロだと段落の数と段落ごとの削除になるので、表内
>の段落にある特定行を削除することには向かないと思います。
ただ、一応、説明はしておきます。
Paragraphは、改行コードで区切られた範囲のことを指します。しかし、行というものは、Word VBAでは、論理的なものでしかありませんし、物理的には存在しているわけではありません。それと、ご指摘になった段落の数と段落ごとを削除するというコードではありませんから、念のため。
私のコードは、Paragraphs というコレクションの最後のParagraphから、遡って、そのParagraphsの先頭に戻ってそこから、削除するという内容です。
セル内をどう区切っているか、区切られていないか、ということです。条件を確認したほうがよいということです。

この回答への補足
回答ありがとうございます!他の質問でもお世話になっています。
頂いたソースコードで可能な処理は了解いたしました。これから行おうとしている処理は「論理的」であることも了解いたしました。
図を用意して頂いているので、そちらを参考に説明をさせていただきます。
プログラムで行いたいのは、「あいうえお」「たちつてと」は勿論のこと、「ねの」「はひふ」の見た目の行を削除することです。
削除したい行にカーソルを持って行き、キーボードで順番にEnd、Shift+Home、Deleteを押すと行の削除ができますが、この処理をプログラムで行いたいと考えています。
対象Wordは私が作成したファイルではなく、提示することは難しいと考えます。ご容赦ください。
今回の質問の流れで[セルの終了記号](End of cell marker)の存在を知ることができたので、
質問自体はほぼ解決しています。ありがとうございます。
No.5
- 回答日時:
勘違いしてるかもその2
Sub sample()
On Error Resume Next
Dim r As Row, c As Cell
For Each r In Selection.Rows
For Each c In r.Cells
c.Range = vbNullString
Next
Next
End Sub
削除なのか、消去なのか...?
この回答への補足
回答、ありがとうございます!
頂いたソースを実装し、表の中、表以外で実行してみたのですが、何も起きませんでした・・・
そして、削除か消去か、ということですが、消去になります。
指定行だけを消去したいのですが、ソース中のCellが表の1つの枠の中を意味するのであればNullを入れてますので、セル内全てを消去しようとしているように読み取れます。
しかし、こういった消去方法や組み方は参考になります。
No.3
- 回答日時:
こんにちは。
他の質問でも同様のものがありましたが、うまく行く・行かないというのは、
>表のセル中の最終行を選択した状態で上記を実行すると、
うまく行かないのは、改行(CRLF)コードで区分けされている、Paragraphが複数行存在していないかもしれません。内容を確認してみないと、なんとも言えません。
複数のParagraph がない場合に切り分けるということは、難しいかもしれません。入力の際に意識して入れたなら、私のコードは実行可能なはずです。それ以外の切り分けのコードは、いくら作っても不安定ではないかと思います。
それは、Excelでも同じですが、セル幅と文字をカウントして、それで、行を探すというのは、あまりうまく行かないのではないかと思います。ただし、Excelのセル内では、違う改行(LF)コードだったと思います。また、Wordでも似たような改行コードも存在していたような気がしますが、セル内では用いられないと思います。
No.2
- 回答日時:
こんにちは。
こんなコードではいかがでしょうか?
セル内にカーソルがないと実効しません。
また、セル内が一行しかない場合は、削除しません。
>表のセル中の最終行を選択した状態で上記を実行すると、
最終行の末尾には制御記号があるので、Cell内全体を選択されます。
'-------------------------------------------
Sub LineDelect_A_Cell()
Dim i As Long
With Selection
.Expand Unit:=wdCell
i = .Paragraphs.Count 'セル内の行を数える
If i > 1 Then
.Collapse Direction:=wdCollapseEnd
.MoveEnd Unit:=wdCharacter, Count:=-1
.StartOf Unit:=wdParagraph, Extend:=wdExtend
''行を削除する場合は、以下を外す
'.MoveStart Unit:=wdCharacter, Count:=-1
Selection.Delete
End If
End With
End Sub
この回答への補足
回答ありがとうございます。
早速標準モジュールに記載して実行してみたのですが、選択している枠内以外の行が削除されてしまいました。
何度か実行してみると、削除されなかったり、セル内が全て削除されたり、色々なパターンを確認しました。
頂いたコードは、参考にさせていただきます。勉強になります。
No.1
- 回答日時:
> Word上に挿入した表中でに記載されている文章での選択している行の削除
On Error Resume Next
Selection.Rows.Delete
勘違い回答の予感。
この回答への補足
回答、ありがとうございます。
教えて頂いた方法を行ってみましたが、表の行そのものが削除されます。申し訳ないのですが、違ってました・・・
表を作成し、その中にいくつか改行を含めた文字列を入力し、上記の質問部分のプログラムを実行すると、なぜか選択行の文字だけでなく、セル内全てが削除されてしまいます。
質問部分のプログラムは、ほぼ期待通りの動きはしているので、何かが足りないだけだと思うのですが・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Excel(エクセル) エクセルVBA 作業後に選択範囲を解除する方法 5 2023/02/17 07:13
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- メルカリ メルカリに関しての質問です。 登録したお支払い用銀行口座を削除したいのですが、できません。 「支払い 1 2022/11/22 10:25
- Excel(エクセル) エクセルVBA 複数行にまたがっている選択を判定するには 2 2023/05/21 21:54
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Excel(エクセル) マクロを教えてください 3 2023/07/31 21:57
このQ&Aを見た人はこんなQ&Aも見ています
-
Word VBA 表中の空白行を削除する方法
Word(ワード)
-
Wordの文章中の一致した文字のある段落を削除する
Visual Basic(VBA)
-
Word VBA 表中の空白行を削除する方法
Word(ワード)
-
-
4
指定した文字があった場合、その行を削除するマクロが欲しいです
Excel(エクセル)
-
5
Word版VBで表の任意の箇所を取得する(Cellメソッド)
Visual Basic(VBA)
-
6
WordVBAで規定のところに文字列を挿入したい
Access(アクセス)
-
7
ワードで選択範囲だけの改行を削除するマクロ
Word(ワード)
-
8
WORDマクロで特定文字から別文字までを範囲選択したい
Word(ワード)
-
9
エクセルマクロでワードの一ページ目をコピーして新たに二ページを追加して、一ページ目の内容を貼り付ける
Visual Basic(VBA)
-
10
ExcelのVBAでWordを読み取り専用で開いて、見たいページに自動で移動する方法を教えて頂きたい
Excel(エクセル)
-
11
MS Office Word のマクロで行列の現在位置を取得したいのですが?
Word(ワード)
-
12
EXCEL(VBA) 末尾の改行のみ削除したい
Excel(エクセル)
-
13
WordVBA 置換処理での改行文字の可否
その他(Microsoft Office)
-
14
Cell内の一部を指定する方法(Word VBA)
その他(Microsoft Office)
-
15
【VBA】エクセルの指定セルの値を、Wordの指定場所に貼る方法
Excel(エクセル)
-
16
エクセルのマクロでワードの任意のテキストボックスへ文字列を書き込む方法を誰か教えていただけませんか
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セル入力文字が、「右のセルに...
-
あるセルに色を付けた時、別の...
-
エクセルで知らない間に行がず...
-
Excelのセル内の文字の頭に半角...
-
エクセルでセルの中の文字が削...
-
エクセルの行を巾を変えずに増...
-
エクセル2010で、結合したセル...
-
Wordで、表のセルが変なところ...
-
エクセルの一つのセル内に2つの...
-
Wordの表で逆L字型のセルを作成...
-
WORDで表の行を2行に分けたい
-
【VBA】結合セルの罫線処理につ...
-
桐ver.9について
-
エクセルのセルの右側の罫線が...
-
エクセルで捺印をもらう欄を別...
-
エクセルにチェックボックスを...
-
エクセル 結合したセルの間にセ...
-
Excelで文字を縦長にするには?
-
Word2007の表で「セルを削除後...
-
ピボットで作成した表は、セル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セル入力文字が、「右のセルに...
-
エクセルでセルの中の文字が削...
-
エクセルで知らない間に行がず...
-
あるセルに色を付けた時、別の...
-
Excelのセル内の文字の頭に半角...
-
Wordで、表のセルが変なところ...
-
エクセルの一つのセル内に2つの...
-
エクセル 結合したセルの間にセ...
-
エクセル2010で、結合したセル...
-
WORDで表の行を2行に分けたい
-
Wordでセルに文字を入力すると...
-
ワードで表を作ってセル内で改...
-
ワードで表の中の文字がセンタ...
-
Wordの表で逆L字型のセルを作成...
-
ピボットで作成した表は、セル...
-
エクセルで複数行を括弧でくく...
-
Word 表のセルを結合せずに文字...
-
エクセルで捺印をもらう欄を別...
-
Wordで天地(上下)が同じ中に...
-
Word 表のセル塗りつぶし
おすすめ情報