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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
スマホに会話を聞かれているな!?と思ったことありますか?
スマートフォンで検索はしてないのに、友達と話していた製品の広告が直後に出てきたりすることってありませんか? こんな感じでスマホに会話を聞かれているかも!?と思ったエピソードってありますか?
-
コンビニでおにぎりを買うときのスタメンはどの具?
コンビニでおにぎりを買うとき、何の具材を選ぶことが多いですか?
-
人生でいちばんスベッた瞬間
誰しも、笑いをとろうとして失敗した経験があると思います。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
Wordの文章中の一致した文字のある段落を削除する
Visual Basic(VBA)
-
Word VBA 表中の空白行を削除する方法
Word(ワード)
-
指定した文字があった場合、その行を削除するマクロが欲しいです
Excel(エクセル)
-
-
4
Word VBA 表中の空白行を削除する方法
Word(ワード)
-
5
Word のVBAについて初心者なのですが、質問があります。
Word(ワード)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
エクセルマクロでワードの一ページ目をコピーして新たに二ページを追加して、一ページ目の内容を貼り付ける
Visual Basic(VBA)
-
8
Wordマクロ、選択した複数行を1行ずつ読み込みたい
Word(ワード)
-
9
Word VBA。各マクロの間に待ち時間を指定するには?
Word(ワード)
-
10
ワードのマクロで段落番号(文字も含む)取得ってできますか
Word(ワード)
-
11
Word版VBで表の任意の箇所を取得する(Cellメソッド)
Visual Basic(VBA)
-
12
2つ以上の変数を比較して最大数を求めたい
Word(ワード)
-
13
MS Office Word のマクロで行列の現在位置を取得したいのですが?
Word(ワード)
-
14
ExcelVBAで既に開いてるwordを閉じる
Excel(エクセル)
-
15
Cell内の一部を指定する方法(Word VBA)
その他(Microsoft Office)
-
16
【VBA】エクセルの指定セルの値を、Wordの指定場所に貼る方法
Excel(エクセル)
-
17
VBAで文章を指定の文字数で改行コードを挿入したい
その他(Microsoft Office)
-
18
ExcelのVBAでWordを読み取り専用で開いて、見たいページに自動で移動する方法を教えて頂きたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セル入力文字が、「右のセルに...
-
エクセルで知らない間に行がず...
-
Excelのセル内の文字の頭に半角...
-
Wordでセルに文字を入力すると...
-
エクセルでセルの中の文字が削...
-
Wordで、表のセルが変なところ...
-
あるセルに色を付けた時、別の...
-
ピボットで作成した表は、セル...
-
Wordで天地(上下)が同じ中に...
-
エクセルの一つのセル内に2つの...
-
ワードで表を作ってセル内で改...
-
エクセルで条件付きで罫線の斜...
-
エクセル2010で、結合したセル...
-
エクセルの列幅(行の高さ)の自...
-
名刺に写真を背景として入れたい。
-
Excelで「折り返して全体を表示...
-
Word 表のセル塗りつぶし
-
WORDで表の行を2行に分けたい
-
Wordの表で逆L字型のセルを作成...
-
検索でヒットしたセルの表示位...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セル入力文字が、「右のセルに...
-
エクセルで知らない間に行がず...
-
あるセルに色を付けた時、別の...
-
エクセルでセルの中の文字が削...
-
エクセルの一つのセル内に2つの...
-
Excelのセル内の文字の頭に半角...
-
WORDで表の行を2行に分けたい
-
Wordで、表のセルが変なところ...
-
エクセル2010で、結合したセル...
-
Wordでセルに文字を入力すると...
-
エクセル 結合したセルの間にセ...
-
ワードで表を作ってセル内で改...
-
エクセルで1列おきのデータのみ...
-
ピボットで作成した表は、セル...
-
Wordの表で逆L字型のセルを作成...
-
Word 表のセル塗りつぶし
-
Word 表のセルを結合せずに文字...
-
エクセルで複数行を括弧でくく...
-
検索でヒットしたセルの表示位...
-
Excelで「折り返して全体を表示...
おすすめ情報