
【作りたいマクロ】
アクティブセルが、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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルについてどう関数を使えばいいか教えてください。
Excel(エクセル)
-
【マクロ】条件付き書式設定をマクロ化するには?
Excel(エクセル)
-
【マクロ】コードを少しでも、減らする為には
Excel(エクセル)
-
-
4
エクセルでカウントする
Excel(エクセル)
-
5
エクセルのマクロを記録して即実行したらエラー
Excel(エクセル)
-
6
【関数】同じ関数なのに、エラーが出るエクセルと出ないエクセルある?
Excel(エクセル)
-
7
ExcelのIF関数との組み合わせの相談
Excel(エクセル)
-
8
VBA_日時のソート
Excel(エクセル)
-
9
役所でもらった書類をエクセル化するには? 役所に申請する用紙があります。A4で表になっていて枠内に文
その他(Microsoft Office)
-
10
エクセルについて教えてください
Excel(エクセル)
-
11
エクセルのファイルのコピーをとりたい
Excel(エクセル)
-
12
Excel いい方法教えてください。
Excel(エクセル)
-
13
自動的に日付入力 応用
Excel(エクセル)
-
14
マクロを実行すると、セル範囲に @ がついてしまう
Excel(エクセル)
-
15
Excelについて教えてください。
Excel(エクセル)
-
16
2枚のエクセル表で数字をマッチングさせる方法を教えてください
Excel(エクセル)
-
17
至急お願いします!エクセルのフィルターについて
Excel(エクセル)
-
18
エクセルの循環参照を削除したい!
Excel(エクセル)
-
19
マクロOn Error GoTo ErrLabelとOn Error Resume Next教えて
Excel(エクセル)
-
20
【WordでもExcelでも良いですが】A4サイズの用紙に1文字を印刷する方を教えてく
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
vba テキストボックスとリフト...
-
【画像あり】オートフィルター...
-
Office2021のエクセルで米国株...
-
エクセルのVBAで集計をしたい
-
【マクロ】【配列】3つのシー...
-
【マクロ】【相談】Excelブック...
-
エクセルに写真が貼れない(フ...
-
エクセルのライセンスが分かり...
-
【マクロ】元データと同じお客...
-
エクセルシートの見出しの文字...
-
【マクロ】excelファイルを開く...
-
LibreOffice Clalc(またはエク...
-
【マクロ】【画像あり】❶ブック...
-
【関数】3つのセルの中で最新...
-
【関数】=EXACT(a1,b1) a1とb1...
-
セルにぴったし写真を挿入
-
Excelに貼ったXのURLのリンク...
-
【マクロ】【画像あり】4つの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報