[[20230124091546]] 『行削除について』(豆助ごんたくん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『行削除について』(豆助ごんたくん)

行の選択した後指定したa列からh列を削除し、その後削除して空北なったa列からh列を詰めるを行いたいと思います。
VBAでどうすれば良いのかご教授をお願い致します。

< 使用 Excel:Microsoft365、使用 OS:Windows10 >


記録したらえーやん。聞くまでもない。

(通りすがり) 2023/01/24(火) 09:25:45


 1 行の選択をした後
 2 指定したa列からh列を削除し
 3 その後削除して空北なったa列からh列を詰める

よく分からないんですが、単純にA列からH列を削除するんじゃなくて、
選択した行とA列からH列がクロスする部分だけ削除したいということでしょうか。

     |[A]|[B]|[C]|[D]|[E]|[F]|[G]|[H]|[I]|[J]
 [1] |  1|  2|  3|  4|  5|  6|  7|  8|  9| 10
 [2] | 11| 12| 13| 14| 15| 16| 17| 18| 19| 20
 [3] | 21| 22| 23| 24| 25| 26| 27| 28| 29| 30
 [4] | 31| 32| 33| 34| 35| 36| 37| 38| 39| 40
 [5] | 41| 42| 43| 44| 45| 46| 47| 48| 49| 50
 [6] | 51| 52| 53| 54| 55| 56| 57| 58| 59| 60
 [7] | 61| 62| 63| 64| 65| 66| 67| 68| 69| 70
 [8] | 71| 72| 73| 74| 75| 76| 77| 78| 79| 80
 [9] | 81| 82| 83| 84| 85| 86| 87| 88| 89| 90
 [10]| 91| 92| 93| 94| 95| 96| 97| 98| 99|100

 結果図(5、6行目を選択した場合)

     |[A]|[B]|[C]|[D]|[E]|[F]|[G]|[H]|[I]|[J]
 [1] |  1|  2|  3|  4|  5|  6|  7|  8|  9| 10
 [2] | 11| 12| 13| 14| 15| 16| 17| 18| 19| 20
 [3] | 21| 22| 23| 24| 25| 26| 27| 28| 29| 30
 [4] | 31| 32| 33| 34| 35| 36| 37| 38| 39| 40
 [5] | 49| 50|   |   |   |   |   |   |   |   
 [6] | 59| 60|   |   |   |   |   |   |   |   
 [7] | 61| 62| 63| 64| 65| 66| 67| 68| 69| 70
 [8] | 71| 72| 73| 74| 75| 76| 77| 78| 79| 80
 [9] | 81| 82| 83| 84| 85| 86| 87| 88| 89| 90
 [10]| 91| 92| 93| 94| 95| 96| 97| 98| 99|100

 Sub test()
     Dim LastC As Long, rng As Range
     LastC = Cells(1, Columns.Count).End(xlToLeft).Column
     On Error Resume Next
     Set rng = Application.InputBox(prompt:="行を選択してください。", Type:=8)
     If rng Is Nothing Then Exit Sub
     On Error GoTo 0
     rng.EntireRow.Resize(, LastC - 8).Offset(0, 8).Copy Cells(rng.Row, 1)
     rng.EntireRow.Resize(, 8).Offset(0, LastC - 8) = ""
 End Sub
(フォーキー) 2023/01/24(火) 10:32:24

私の説明不足で申し訳ございません。
こんな風に致したいと思っております。

     |[A]|[B]|[C]|[D]|[E]|[F]|[G]|[H]|[I]|[J]
 [1] |  1|  2|  3|  4|  5|  6|  7|  8|  9| 10
 [2] | 11| 12| 13| 14| 15| 16| 17| 18| 19| 20
 [3] | 21| 22| 23| 24| 25| 26| 27| 28| 29| 30
 [4] | 31| 32| 33| 34| 35| 36| 37| 38| 39| 40
 [5] | 41| 42| 43| 44| 45| 46| 47| 48| 49| 50
 [6] | 51| 52| 53| 54| 55| 56| 57| 58| 59| 60
 [7] | 61| 62| 63| 64| 65| 66| 67| 68| 69| 70
 [8] | 71| 72| 73| 74| 75| 76| 77| 78| 79| 80
 [9] | 81| 82| 83| 84| 85| 86| 87| 88| 89| 90
 [10]| 91| 92| 93| 94| 95| 96| 97| 98| 99|100

結果図(5、6行目を選択した場合)

     |[A]|[B]|[C]|[D]|[E]|[F]|[G]|[H]|[I]|[J]
 [1] |  1|  2|  3|  4|  5|  6|  7|  8|  9| 10
 [2] | 11| 12| 13| 14| 15| 16| 17| 18| 19| 20
 [3] | 21| 22| 23| 24| 25| 26| 27| 28| 29| 30
 [4] | 31| 32| 33| 34| 35| 36| 37| 38| 39| 40
 [5] | 61| 62| 63| 64| 65| 66| 67| 68| 49| 50
 [6] | 71| 72| 73| 74| 75| 76| 77| 78| 59| 60
 [7] | 81| 82| 83| 84| 85| 86| 87| 88| 69| 70
 [8] | 91| 92| 93| 94| 95| 96| 97| 98| 79| 80
 [9] |   |   |   |   |   |   |   |   | 89| 90
 [10]|   |   |   |   |   |   |   |   | 99|100

(豆助ごんたくん) 2023/01/24(火) 11:30:43


削除すべき範囲を選択しておいて
削除 ‐ 上方向にシフト
の動作をマクロ記録すると
Selection.Delete Shift:=xlUp
こうなる。
これを利用すればいいよ。

日本語の修正くらい自分でしようよ。
(abc) 2023/01/24(火) 11:53:36


 >削除すべき範囲を選択しておいて
 >削除 ‐ 上方向にシフト

選択した箇所だけ左右、上下方向に詰めることができることを忘れてました。
豆助ごんたくんさん、コードは破棄してください。

abcさんありがとうございます。
(フォーキー) 2023/01/24(火) 11:56:55


そもそもこれってマクロにしないといけないことなんですか?
手作業でセル範囲を選択して、削除ボタンを押すだけじゃないんですか?
予め対象範囲が決まっているなら一括処理にする意味もあるでしょうけど、
もし、その都度、範囲が変わるなら余計のこと、手作業ですれば済む話なのでは?

(abc) 2023/01/24(火) 20:27:49


 回答者の参考として。

http://www.vbalab.sakura.ne.jp/vbaqa/c-board.cgi?cmd=ntr;tree=82119;id=excel
(マルチネス) 2023/01/25(水) 09:37:24


いろいろありがとうございました。
(豆助ごんたくん) 2023/01/25(水) 22:42:21

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.