
【質問】
以下のコードより、行数や文字数を少ない
マクロにする事はできますか?
マクロを少しでも簡単にしたいです
ご存じの方、コードやアドバイスをお願いします
【マクロの説明】
アクティブセルになっている行を上の表の最終行の1つ下に
移動するマクロです。移動する表の3列目には削除と文字が入力されます
以下コードは動きます
【条件】
上と下の表は常に8セルあいています
【コード】
Sub 不要行削除()
Dim filePath As String
Dim wb As Workbook
Dim LastRow1 As Long
filePath = "C:\Users\2020\OneDrive\マクロ\不要行削除\鏡.xlsm"
Set wb = Workbooks.Open(filePath)
Set ws = wb.Worksheets("RC00810")
LastRow1 = Cells(5, "A").End(xlDown).Row
ActiveRow = ActiveCell.Row
ws.Range(Cells(ActiveRow, 1), Cells(ActiveRow, 3)).Interior.ColorIndex = 15
ws.Cells(ActiveRow, 3) = "削除"
ws.Range(Cells(ActiveRow, 1), Cells(ActiveRow, 3)).Cut ws.Range(Cells(LastRow1 + 1, 1), Cells(LastRow1 + 1, 3))
ActiveCell.EntireRow.Delete
Rows(LastRow1 + 2).Insert
End Sub


- 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
- 今の自分の気分スタンプを選ぼう!
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
No1の回答のお礼にいただいた質問の答えです
---------------------------------------------------
(1) Range("A" & ActiveRow & ":C" & ActiveRow) の意味・・・
まず、この部分は 「A列からC列の ActiveRow 行目を範囲として取得」 という意味になります。
例えば、ActiveRow = 8 なら「ws.Range("A8:C8")」と同じです。
---------------------------------------------------
(2) .Cells(1, 3) の意味
次に Cells(1, 3) の動作ですが、これは 指定した範囲 (A8:C8) の中で、行1・列3 のセルを指します。
「A8:C8」の中で Cells(1, 3) を考える
Range("A8:C8") の セルの構成 を考えると、A8 B8 C8 の3つのセルがあります。
この範囲内での .Cells(1, 3) の意味は、
「この範囲の1行目(最初の行)の3列目」 なので C8 を指します。
つまり、「ws.Range("A8:C8").Cells(1, 3) = "削除"」は 「C8 に '削除' と入力する」 という意味になります。
---------------------------------------------------
(3) Cells(1,3) が A3 ではない理由
もし Cells(1, 3) を ワークシート全体(ws.Cells(1,3)) で考えるなら、それは C1 になります。
しかし、 Range("A8:C8") という範囲の中で Cells(1,3) を使っている ため、
「この範囲内での相対的なセル位置」として解釈 されます。
したがって、
Cells(1,1) → A8
Cells(1,2) → B8
Cells(1,3) → C8
となるわけです。
---------------------------------------------------
No.2
- 回答日時:
ws.Activateを入れれば、以降は ws. が不要になりスッキリします。
説明では行を移動するということなので、CutするのもEntireRowにして
ActiveCell.EntireRow.Cut Rows(LastRow1 + 1)でいいでしょう。
図では8行目に「削除」の行が残っているし移動先はグレイになっていないし説明と違いますが、図が間違っているのでしょうか?
No.1
- 回答日時:
改善点
・Dim を1行に記載する
・不要な変数を削減
filePath 変数を削除し、直接 Open に記述。
・With ステートメントの使用
ws の指定を簡略化し、冗長な ws.Range(Cells(...)) を省略。
・変数の宣言と使用方法を最適化
ActiveRow は Dim で明示的に宣言。
・セルの範囲指定を簡略化
Range(Cells(...), Cells(...)) を Range("A" & row & ":C" & row) で簡単に記述。
・不要な Insert の削除
Rows(LastRow1 + 2).Insert は不要だったため削除。
Sub 不要行削除()
Dim wb As Workbook, ws As Worksheet, LastRow1 As Long, ActiveRow As Long
' ブックを開く
Set wb = Workbooks.Open("C:\Users\2020\OneDrive\マクロ\不要行削除\鏡.xlsm")
Set ws = wb.Worksheets("RC00810")
' 最終行を取得
LastRow1 = ws.Cells(5, "A").End(xlDown).Row
ActiveRow = ActiveCell.Row
' 移動する行の色を変更し、3列目に「削除」と入力
With ws.Range("A" & ActiveRow & ":C" & ActiveRow)
.Interior.ColorIndex = 15
.Cells(1, 3) = "削除"
.Cut ws.Range("A" & LastRow1 + 1)
End With
' 元の行を削除
ActiveCell.EntireRow.Delete
End Sub
大変、分かりやすいコードありがとうございます
1点質問なのですが
ws.Range("A" & ActiveRow & ":C" & ActiveRow).Cells(1, 3) = "削除"
ここが分からないのですが、例えばActiveRowが8なら
A8:C8=Cells(1,3)=”削除” となると
Cells(1,3)は、A3になるイメージがありまして
つながってこないのです
ただ、コード動くのであっているのは分かっています
どういう意味か教えて頂けると幸いです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】アクティブセルの行のデータをクリアするマクロについて 1 2024/06/12 06:45
- Excel(エクセル) 【マクロ】AブックからBブックへデータコピーの後、Bブックに上書きされないようにするには? 3 2024/12/22 11:53
- Excel(エクセル) 【マクロ】1回目の実行後、2回目からは実行できないようにはできますか? 3 2025/02/18 21:20
- Visual Basic(VBA) VBAコードが作動しません。修正したいのですが何処に原因かあるか教えて下さい。 1 2024/01/08 16:23
- Visual Basic(VBA) 【マクロ】1つのマクロの中に、ブック指定とシート指定が混在しても良いのですか? 2 2024/05/16 07:13
- Excel(エクセル) マクロについて 2 2023/10/20 14:29
- Excel(エクセル) 【マクロ】上のデータに下のデータを、結合する 3 2025/03/11 12:12
- Visual Basic(VBA) エクセルマクロで出力行の増やし方がわかりません。 4 2023/09/28 23:40
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) ユーザーフォームに別シートからデータを反映させたい。 10 2023/11/03 08:46
このQ&Aを見た人はこんなQ&Aも見ています
-
昔のあなたへのアドバイス
過去のあなたへ一度だけアドバイスを送れる電話があったとします。
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
歩いた自慢大会
「めちゃくちゃ歩いたエピソード」を教えてください。
-
一番好きなみそ汁の具材は?
みんなで大好きなみそ汁の具材について語り合おうよっ!
-
準・究極の選択
「年収1000万円で一生カレーライス」か「年収180万円で毎日何でも食べ放題」
-
関数を教えて下さい
Excel(エクセル)
-
【マクロ】1回目の実行後、2回目からは実行できないようにはできますか?
Excel(エクセル)
-
質問58753 このコードでうまく動作しません。どうしたら良いですか Private Sub Wor
Visual Basic(VBA)
-
-
4
以下のプログラムの実行結果はどうなると思いますか? その理由も教えてください。
Visual Basic(VBA)
-
5
Excel関数の解決方法
Excel(エクセル)
-
6
役所でもらった書類をエクセル化するには? 役所に申請する用紙があります。A4で表になっていて枠内に文
その他(Microsoft Office)
-
7
算術演算子「¥」の意味について
Visual Basic(VBA)
-
8
勤務外時間を出す表が作りたい
Excel(エクセル)
-
9
【マクロ】参照渡しとモジュールレベル変数 どっちが よく使うものですか?
Excel(エクセル)
-
10
【マクロ】データ移動について代替案(コード)or助言を下さい
Excel(エクセル)
-
11
VBA_日時のソート
Excel(エクセル)
-
12
【マクロ、画像あり】A表かB表かどちらか判断をして、処理をする
Excel(エクセル)
-
13
Excelの計算が合いません。 諸事情で会計の簡素な購入・販売諸元表を作っているのですが、一つの項目
Excel(エクセル)
-
14
Excel いい方法教えてください。
Excel(エクセル)
-
15
別のシートの指定列の最終行を返す関数の式を教えて下さい。
Excel(エクセル)
-
16
【マクロ】重複する同じ行を、削除でなく1番下の行に回し色を付ける為には
Excel(エクセル)
-
17
自動的に日付入力 応用
Excel(エクセル)
-
18
ユーザーマクロ作成
Excel(エクセル)
-
19
【マクロ】データ移動について代替案(コード)or助言を下さい
Excel(エクセル)
-
20
VBAの「To」という語句について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロ・VBAで、当該ファイルの...
-
エクセルで二つのブックの違い...
-
エクセルについてどう関数を使...
-
エクセルでカウントする
-
エクセルのファイルのコピーを...
-
【マクロ、画像あり】A表かB表...
-
【マクロ】コードを少しでも、...
-
空白処理を空白に
-
エクセルでラベルシールを印刷...
-
Excelファイルを開くと私だけVA...
-
名前の間のスペースをそろえる...
-
エクセルの数式について教えて...
-
スプレッドシート(Excelでも良...
-
列挿入をVBAで
-
重複しない値を抽出したい
-
空白のはずがSUBTOTAL関数でカ...
-
【マクロ 画像あり】Exact関数...
-
【マクロ 画像あり】セル範囲の...
-
エクセルの難問。「コピペする...
-
エクセルの循環参照を削除したい!
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの設定、下へスクロー...
-
別のシートの指定列の最終行を...
-
【マクロ】シート追加時に同じ...
-
Excelファイルを開くと私だけVA...
-
Excelの関数を教えて下さい。
-
マクロを実行すると、セル範囲...
-
エクセルの設定、特定の列以降...
-
Excelの条件付書式について教え...
-
Excelで作成した出欠表から日付...
-
Excelでの文字入力について
-
Excel 日付の表示が直せません...
-
Excel関数の解決方法
-
システムファイルについて
-
自動的に日付入力 応用
-
UNIQUE関数の代用
-
エクセル内に読み込んが画像の...
-
勤務外時間を出す表が作りたい
-
Excel 偶数月の15日(土日祝...
-
【マクロ】Call関数で呼び出し...
-
【マクロ】1回目の実行後、2...
おすすめ情報