qii-yah
@qii-yah

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

エクセルVBA 特定の列に日付が入力されたらマクロを実行する

解決したいこと

特定の列に日付が入力されたらマクロを実行させたいのです。
列名:O列

例)
ECサイトの物販業を運営しておりまして、
エクセルの
シート(リスト)=受注時のデータがあり、処理が完了したら
シート(リスト2)へ処理終了済みとしてデータを移動させたいです。

<処理終了済み>の判断基準として、
シート(リスト)の<O列>に発送日が入力された場合を基準としたいです。

まず、具体的な日付を入れたパターンでマクロを作成してみました。
これ自体は動作確認できたのですが、

●O列の内どの行のO列でも実行する。
という記述がどうしてもできません。

ご存じの方お教えいただけます様お願い申し上げます。
また、作成したマクロの記述は、色々見様見真似で記述しましたので
不要な記述もあるかも知れません。

何卒よろしくお願い申し上げます。

作成したマクロの記述ソースコード

Sub 貼り付け()
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Dim lastRow1 As Long
    Dim lastRow2 As Long

    ' シートを設定
    Set ws1 = ThisWorkbook.Sheets("リスト")
    Set ws2 = ThisWorkbook.Sheets("リスト 2")
    
    
    ' Sheetsリストの該当セルの行を指定
    Range("O5").Select
    ActiveCell.FormulaR1C1 = "10/17/2024"
    
    'アクティブな列の行を指定
    ActiveCell.EntireRow.Select
    
    '上記の列・一行を切り取り
    Selection.Cut

    ' Sheetリスト 2の最終行を取得
    lastRow2 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).row

    ' データを貼り付け
    ActiveSheet.Paste ws2.Range("A" & lastRow2 + 1)
    
    'リストに戻る
    Sheets("リスト").Select
    Range("テーブル1[#Headers]").Select
    
    
    
End Sub
0

3Answer

具体的な日付を入れたパターンでマクロを作成してみました。
これ自体は動作確認できたのですが、

これは、↓ここの O5セル のことを、おっしゃっていますか?

Range("O5").Select
ActiveCell.FormulaR1C1 = "10/17/2024"

そうだとして、

O列の内どの行のO列でも実行する。
という記述がどうしてもできません。

Ox セルにしたいということでしたら、
x を 5〜n までループで処理すればよい ということでは?

dim x as integr
for x = 5 to 1000
    Range("O" & x).Select

next
0Like

@nak435

早速のご連絡ありがとうございます。
具体的な日付を入れたパターンでマクロを作成は<O5>のセルのことです。

私は、VBA初心者なのですが
完成イメージとしましては
<O列>に日付が入ったら、直ぐに、マクロを実行。というイメージですが
その場合でもループが良いものでしょうか?
※実際は、入力される日付もまちまちです。
もしご存じであればお教えいただけます様
よろしくお願い申し上げます。

0Like

Comments

  1. <O列>に日付が入ったら、直ぐに、マクロを実行。というイメージですが
    その場合でもループが良いものでしょうか?

    そうでしたら、ループは不要で、次のスクショのように、ワークシートにWorksheet_Changeマクロを書けばよいです。
    シート内のどのセルであっても、セルが更新されるとWorksheet_Changeが呼び出されるので、if文で O列 を判定して、そのセルに対する処理を書けばよいです。

    vbm.png

@nak435

ご親切なアドバイス、本当にありがとうございます。
早速試させていただいたのですが
何故か上手くいかず。。。

お作りいただいたソースコードはピクチャー通り
Sheet(リスト)に作成すれば良いのですよね?

具体的な日付を入れたパターンで作成したソースコードは
現在、moudle3に作成したのですが
これはこのまま置いておいて良いものでしょうか?

何度も申し訳ありません。
よろしくお願い申し上げます。

0Like

Comments

  1. Sheet(リスト)に作成すれば良いのですよね?

    O列 を参照するシートに作成します。
    下記スクショのように、Worksheet Changeが重要です。
    実際の処理はmoudle3に置いてあっても構いませんが、そこの関数を呼び出すように書いていますか?

    vbm1.png

    呼ぶ側、呼ばれる側のスクショを貼ってもらえれば、より具体的にご指摘できます。

Your answer might help someone💌