
【作りたいマクロ】
アクティブセルが、A表orB表のどちらかにあるかを判断して
A表にアクティブセルがある場合⇒A表の最終行に行を移動
B表にアクティブセルがある場合⇒B表の最終行に行を移動
したいです
もし、以下条件の他に、目印になるのを表の行や列に付けて
上記、マクロが達成するなら、付ける事も可能です
アドバイスやコード作れる方、教えて下さい
【作成済みマクロ】
A表にアクティブセルがある時、行をA表の最終行へ移動するマクロ
B表にアクティブセルがある時、行をB表の最終行へ移動するマクロ
【条件】
A表は上、B表は下です
A表とB表の間は常に8セルあいています
A3セル⇒A表
B表は、日付項目の2つ上のセルにB表と表記。事例は、B15
A表やB表のデータ数は変動する
【A表にアクティブセルがある場合のコード】
Sub A表()
LastRow1 = Cells(5, "A").End(xlDown).Row
ActiveRow = ActiveCell.Row
Cells(ActiveRow, 1).Resize(1, 3).Interior.ColorIndex = 15
Cells(ActiveRow, 3) = "削除"
Cells(ActiveRow, 1).Resize(1, 3).Cut Cells(LastRow1 + 1, 1)
ActiveCell.EntireRow.Delete
Rows(LastRow1 + 2).Insert
End Sub
【B表にアクティブセルがある場合のコード】
Sub B表()
LastRow1 = Cells(Rows.Count, "A").End(xlUp).Row
ActiveRow = ActiveCell.Row
Cells(ActiveRow, 1).Resize(1, 3).Interior.ColorIndex = 15
Cells(ActiveRow, 3) = "削除"
Cells(ActiveRow, 1).Resize(1, 3).Cut Cells(LastRow1 + 1, 1)
ActiveCell.EntireRow.Delete
End Sub

A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
No.3です。
大変失礼しました。前回投稿の「Sub sample_A表_B表共通()」は正しく機能しないことが判明しました。
tatsumaru77さんの投稿を読んで、チェックすべきところをチェックできていなかったことに気づきました。
以下のよう修正しましたので、前回回答のコードは無かったものとしてください。
Sub sample_A表_B表共通()
Dim lastrow1 As Long
Dim lastrow2 As Long
Dim Activerow As Long
Dim Activecol As Long
'B表の最終行番号を取得
lastrow1 = Cells(Rows.Count, "A").End(xlUp).Row
'アクティブセルがある表の最終行番号取得
lastrow2 = ActiveCell.CurrentRegion.Rows.Count + ActiveCell.CurrentRegion.Row - 1
'アクティブセルの行番号、列番号を取得
Activerow = ActiveCell.Row
Activecol = ActiveCell.Column
'アクティブセルの列番号が3より大きい、または行番号がA表の開始行より小さいかB表の最終行より大きい、あるいは、その行のB列(お客様情報)が空欄 または「お客様」(見出し行)なら即終了
If Activecol > 3 Or ActiveSheet.UsedRange.Row > Activerow Or lastrow1 < Activerow Or Cells(Activerow, 2).Value = "" Or Cells(Activerow, 2).Value = "お客様" Then Exit Sub
'アクティブセルの行のA~C列の背景色を指定
Cells(Activerow, 1).Resize(1, 3).Interior.ColorIndex = 15
'アクティブセルの行のC列を「削除」とする
Cells(Activerow, 3) = "削除"
'アクティブセルの行を切り取り
'Rows(Activerow).Cut 'C列より右にデータがある場合はこちらをコメントアウト
Cells(Activerow, 1).Resize(1, 3).Cut 'C列より右にデータがある場合はこちらのコメントアウトを外す
'切り取った行を最終行の次に挿入
'Rows(lastrow2 + 1).Insert 'C列より右にデータがある場合はこちらをコメントアウト
Cells(lastrow2 + 1, 1).Insert Shift:=xlDown 'C列より右にデータがある場合はこちらのコメントアウトを外す
End Sub
No.3
- 回答日時:
ご質問者が掲出した画像のA~C列の右側にはデータは存在するのでしょうか?
同じように、
>A表とB表の間は常に8セルあいています
と説明されている
https://oshiete.goo.ne.jp/qa/14059828.html
との関連が気になるところです。
仮に右側にデータがない場合、アクティブセルがある行をまるごと、表の最終行へ移動しても、実質的な影響はないので、A表、B表共通のコードとして、
Sub sample_A表_B表共通()
Dim TopLeftCell As Range
Dim lastrow1 As Long
Dim lastrow2 As Long
Dim Activerow As Long
'A表の左上隅のセルを取得
Set TopLeftCell = ActiveSheet.UsedRange.Cells(1, 1)
'B表の最終行番号を取得
lastrow1 = Cells(Rows.Count, "A").End(xlUp).Row
'アクティブセルがある表の最終行番号取得
lastrow2 = ActiveCell.End(xlDown).Row
'アクティブセルの行番号を取得
Activerow = ActiveCell.Row
'アクティブセルの行番号がA表の開始行より小さい、または、B表の最終行より大きい、あるいは、その行のB列(お客様情報)が空欄 または「お客様」(見出し行)なら即終了
If TopLeftCell.Row > Activerow Or lastrow1 < Activerow Or Cells(Activerow, 2).Value = "" Or Cells(Activerow, 2).Value = "お客様" Then Exit Sub
'アクティブセルの行のA~C列の背景色を指定
Cells(Activerow, 1).Resize(1, 3).Interior.ColorIndex = 15
'アクティブセルの行のC列を「削除」とする
Cells(Activerow, 3) = "削除"
'アクティブセルの行を切り取り
Rows(Activerow).Cut 'C列より右にデータがある場合はこちらをコメントアウト
'Cells(Activerow, 1).Resize(1, 3).Cut 'C列より右にデータがある場合はこちらのコメントアウトを外す
'切り取った行を最終行の次に挿入
Rows(lastrow2 + 1).Insert 'C列より右にデータがある場合はこちらをコメントアウト
'Cells(lastrow2 + 1, 1).Insert Shift:=xlDown 'C列より右にデータがある場合はこちらのコメントアウトを外す
End Sub
とするのはいかがでしょうか。
老婆心ですが、付け加えると、万一、このシートのC列の右側に
https://oshiete.goo.ne.jp/qa/14059828.html
で説明されているA列~C列が、例えばD列~F列に展開されている場合、行まるごと移動する方法は使えません。(コメントアウトを入替て対応)
その後、F列を整形する必要があるので、
Sub sample_整形()
Dim lastrow As Long
lastrow = Cells(Rows.Count, "D").End(xlUp).Row
Range("F1").Formula2 = "=FILTER(D1:D" & lastrow & ",(D1:D" & lastrow & "<>"""")*(D1:D" & lastrow & "<>""x""))"
Range("F1#").Value = Range("F1#").Value
End Sub
という、極めて簡潔なコードで整形すればよいと思います。
No.2
- 回答日時:
図の状態でマクロを実行する場合、
A表にアクティブセルがあると判断して良いのは、A6:C7の範囲であってますか。
不明点1:A8:C8にアクティブセルがあるのは、どうなのか?(削除のものをまた削除するのか)
不明点2:6から7行目であっても、D6とかH7とかがアクティブセルはどうなのか?
不明点3:1~5行目、9~16行目にアクティブセルがあるのは論外と考えて良いか。
等が気になります。
B表にアクティブセルがあると判断して良いのは、A18:C20の範囲であってますか。
不明点4:A21:C21アクティブセルがあるのは、どうなのか?(削除のものをまた削除するのか)
不明点5:18から20行目であっても、D20とかZ18とかはどうなのか。
不明点6:17行目、20行目以降にアクティブセルがあるのは論外と考えて良いか。
等が気になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAコードが作動しません。修正したいのですが何処に原因かあるか教えて下さい。 1 2024/01/08 16:23
- Excel(エクセル) 【マクロ】毎回、ファイル名が変わるファイルへの 文字列の転記 2 2024/05/02 14:17
- Excel(エクセル) 【マクロ】Formulaプロパティにて、3行全てに、数式を入れるためには? 2 2025/02/23 14:23
- Excel(エクセル) 【マクロ】book1からbook2への適切な転記が出来ない件 2 2023/11/08 17:23
- Excel(エクセル) 【マクロ】上のデータに下のデータを、結合する 3 2025/03/11 12:12
- Excel(エクセル) 【マクロ 画像あり】セル範囲の移動について、簡潔で短いマクロがあれば教えて下さい 1 2025/03/15 18:03
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) VBA listBoxについて 2 2024/03/26 16:14
- Excel(エクセル) 3つのマクロを連続実行の中で、1つ目のマクロ要件を満たさなかったら、マクロ2・3を実行しない為には 1 2023/10/15 13:42
- Visual Basic(VBA) クリップボードに貼付している文字列が、マクロで別ブックへ転記すると、消えてしまう 1 2023/10/15 13:36
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルについてどう関数を使えばいいか教えてください。
Excel(エクセル)
-
【マクロ】条件付き書式設定をマクロ化するには?
Excel(エクセル)
-
【マクロ】コードを少しでも、減らする為には
Excel(エクセル)
-
-
4
エクセルのマクロを記録して即実行したらエラー
Excel(エクセル)
-
5
ExcelのIF関数との組み合わせの相談
Excel(エクセル)
-
6
役所でもらった書類をエクセル化するには? 役所に申請する用紙があります。A4で表になっていて枠内に文
その他(Microsoft Office)
-
7
VBA_日時のソート
Excel(エクセル)
-
8
エクセルについて教えてください
Excel(エクセル)
-
9
エクセルでカウントする
Excel(エクセル)
-
10
エクセルのファイルのコピーをとりたい
Excel(エクセル)
-
11
Excel いい方法教えてください。
Excel(エクセル)
-
12
自動的に日付入力 応用
Excel(エクセル)
-
13
マクロを実行すると、セル範囲に @ がついてしまう
Excel(エクセル)
-
14
Excelについて教えてください。
Excel(エクセル)
-
15
2枚のエクセル表で数字をマッチングさせる方法を教えてください
Excel(エクセル)
-
16
マクロOn Error GoTo ErrLabelとOn Error Resume Next教えて
Excel(エクセル)
-
17
名前の間のスペースをそろえる関数はありますか?佐藤 太郎 佐藤 太郎
Excel(エクセル)
-
18
エクセル 月間シフト表で曜日ごとの休み数をカウントしたい
Excel(エクセル)
-
19
【マクロ】A列にある、日付(本日:4月17日)を検索し、セルを選択するには?
Excel(エクセル)
-
20
条件付き書式の効率的な設定の仕方について
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセルのdatedif関数を使って...
-
エクセル ドロップダウンリスト...
-
特定のセルだけ結果がおかしい...
-
【マクロ】【配列】3つのシー...
-
【関数】同じ関数なのに、エラ...
-
【マクロ】列を折りたたみ非表...
-
vba テキストボックスとリフト...
-
エクセルのVBAで集計をしたい
-
【マクロ】EXCELで読込したCSV...
-
【条件付き書式】シートの中で...
-
【マクロ】オートフィルターの...
-
ページが変なふうに切れる
-
【マクロ】アクティブセルの時...
-
【マクロ】3行に上から下に並...
-
エクセルの循環参照、?
-
iPhoneのExcelアプリで、別のシ...
-
【マクロ】A列にある、日付(本...
-
エクセル
-
エクセルに、105と入力すると、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報