アプリ版:「スタンプのみでお礼する」機能のリリースについて

マクロ初心者です。
日がすぎたら過去の日にちが自動消え
エクセルの行が自動で上に更新できる方法はありますか?
4/4の日に

4/1消したい
4/2残す
4/3残す

A 回答 (2件)

質問の内容も、マクロ初心の程度も、見当がつきにくいですが、


「日がすぎたら過去の日にちが自動消え」
⇒ エクセルファイルを開いたときに、その開く動作によって自動的に処理を完了させる
「過去の日にちが自動消え、エクセルの行が自動で上に更新」
⇒ 特定のシート(一番左のシート)の、A列の中にある日付データだけのセルを調べて、エクセルファイルを開いた日付の前々日(2日前:2018/4/25に開いたら、2018/4/23)を含む以前の日である行を丸ごと1行単純に削除し、1行分上に詰める

上のようにやるなら、そのエクセルファイルのエクセルのVisual Basicエディタを表示させて、ThisWorkbookのモジュールに、次のコードを書いて、そのエクセルファイルを上書き保存(マクロ有効ブック)しておくと、ほぼ、動作はします。

Private Sub Workbook_Open()
Dim Hizuke As Date, mysh As Variant, mycol As Variant
Dim k As Variant, g As Variant, B As Single
mysh = 1 '  mysh=の数値が、操作対象のシートの番号 一番左のシートなら1
B = 2 '  B=の数値が、削除するカウント 2ならば、2日前、3日前、4日前などを削除
mycol = 1 '  mycol =の数値が、調べる対象の日付のある列の番号 A列は1、B列は2
Hizuke = Date - B
Sheets(mysh).Activate
k = Sheets(mysh).Cells.SpecialCells(xlCellTypeLastCell).Row
g = 1 + k - Sheets(mysh).UsedRange.Rows.Count
B = g
For B = g To k
If IsDate(Cells(B, mycol)) And Cells(B, mycol) <= Hizuke Then
Rows(B).Delete Shift:=xlUp: B = B - 1
End If
Next
End Sub

ただ、ファイルを開いたときに自動的にマクロを実行してファイルを書き換えてしまう仕様にしてしまうと、どうやっても、前の状態のファイルを開いて確認することができなくなってしまうので、そのような仕様にはしない方が良いように思います。
「Private Sub Workbook_Open()」をThisWorkbookのモジュールに書くのではなく、標準モジュールに上記と同じ内容を普通のSubで書いて、それを自分で実行させるようにした方がましだと思います。
    • good
    • 0

よくわかりません。



日がすぎたら過去の日にちが自動消え、エクセルの行が自動で上に更新できる方法はありますか?
【4/4の日に】
4/1消したい : 4/4の前で過去の日にちであるため
4/2残す   : 4/4の前で過去の日にちであるけれども
4/3残す   : 4/4の前で過去の日にちであるけれども

エクセルファイルを開いたときに、あるシートのある列のセルの日付が、ファイルを開いた日付よりも、3日以前の日付である場合に、そのセルのある行を削除するということなら、VBAで実現できます。
ファイルを開いた日 削除対象基準 削除になる日付例 削除しない日付例
2018/4/24 :     ~3日前   4/19,4/20,4/21 :4/22,4/23,4/24,5/5
2018/4/24 :     ~1日前   4/21,4/22,4/23 :4/24,4/25,5/5

ただし、このような処理をすると、行が削除される⇒(その削除される行のセルを参照する式がどこかにあると、参照先はエラーを起こす)ことになります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!