Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3014 / 13644 ツリー ←次へ | 前へ→

【64776】VBA(Excel 2003)に関する質問です。 地盤看板鞄 10/3/13(土) 5:08 質問[未読]
【64777】Re:VBA(Excel 2003)に関する質問です。 ponpon 10/3/13(土) 6:10 発言[未読]
【64778】Re:VBA(Excel 2003)に関する質問です。 地盤看板鞄 10/3/13(土) 7:12 質問[未読]
【64781】Re:VBA(Excel 2003)に関する質問です。 ponpon 10/3/13(土) 8:33 発言[未読]
【64782】Re:VBA(Excel 2003)に関する質問です。 地盤看板鞄 10/3/13(土) 8:46 お礼[未読]
【64779】Re:VBA(Excel 2003)に関する質問です。 よろずや 10/3/13(土) 8:01 回答[未読]
【64783】Re:VBA(Excel 2003)に関する質問です。 地盤看板鞄 10/3/13(土) 8:48 お礼[未読]

【64776】VBA(Excel 2003)に関する質問です。
質問  地盤看板鞄 E-MAIL  - 10/3/13(土) 5:08 -

引用なし
パスワード
   初歩的な質問で申し訳ありません。

A B C
1 日付 予定 …
2 ( ) ( )
3 ( ) ( )
4 ( ) ( )

 上記ようなのスケジュール表で、A列に「日付(書式:m"月"d"日")」、
B列に「予定」を昇順で表示しています。
 そこで、マクロを用いて、昨日までの日付の行全体を削除して、「セル
A2」に今日の日付が来るように(一番上に「今日」の日付)表示するに
は、どうすればいいでしょうか?
 
 尚、下記のようなコードのような場合、「セルA2」が昨日以前の日付
の場合有効ですが、「セルA2」が既に「今日」の日付になっている状態
でマクロを実行すると、表示がずれてしまいます。 これでは、「起動時
にマクロ実行」の設定の場合、同じ日に2回目以降エクセルを起動する
と、問題が生じてしまいます。
 「起動時にマクロ実行」の設定で、同じ日に複数回エクセルを起動する
という前提でお願いします。

*************************************************************
Private Sub Workbook_Open()
削除行数 = WorksheetFunction.CountIf([a:a], "<" & Format(Date))
Rows("2:" & 削除行数 + 1).Delete
End Sub
*************************************************************

【64777】Re:VBA(Excel 2003)に関する質問で...
発言  ponpon  - 10/3/13(土) 6:10 -

引用なし
パスワード
   作ってみました。
よければ、Private Sub Workbook_Open()に

Sub test()
 Dim r As Range
 
 On Error Resume Next
 With Sheets("Sheet1")
   Set r = .Columns(1).Find(Date)
  ' MsgBox r.Address
   .Range(.Cells(1, 1), r.Offset(-1)).EntireRow.Delete
  End With
 On Error GoTo 0
End Sub

【64778】Re:VBA(Excel 2003)に関する質問で...
質問  地盤看板鞄  - 10/3/13(土) 7:12 -

引用なし
パスワード
   ponponさん
早速のご回答ありがとうございます。

Range(.Cells(1, 1)の(1, 1)を(2, 1)と訂正すると
ちょうどセルA2に今日の日付が表示されました。

ただ、この状態でもう一度マクロ実行するとセルA1に
「3月14日」と表示されてしまいます。

起動時にマクロ実行しなければ問題ないのですが、他に
いい方法はないでしょうか?

【64779】Re:VBA(Excel 2003)に関する質問で...
回答  よろずや  - 10/3/13(土) 8:01 -

引用なし
パスワード
   ▼地盤看板鞄 さん:
>*************************************************************
>Private Sub Workbook_Open()
>削除行数 = WorksheetFunction.CountIf([a:a], "<" & Format(Date))
If 削除行数 > 0 Then
>Rows("2:" & 削除行数 + 1).Delete
End If
>End Sub
>*************************************************************

【64781】Re:VBA(Excel 2003)に関する質問で...
発言  ponpon  - 10/3/13(土) 8:33 -

引用なし
パスワード
   すでによろずや さんから回答がありますが、

こんなもんでどうでしょう?

Sub test2()
 Dim r As Range

 On Error Resume Next
 With Sheets("Sheet1")
   Set r = .Columns(1).Find(Date)
   If r.Offset(-1) <> .Cells(1, 1) Then
     .Range(.Cells(2, 1), r.Offset(-1)).EntireRow.Delete
   End If
  End With
 On Error GoTo 0
End Sub

【64782】Re:VBA(Excel 2003)に関する質問で...
お礼  地盤看板鞄  - 10/3/13(土) 8:46 -

引用なし
パスワード
   ponponさん

頂いたコードで完全に表示できました。

本当に助かりました。
ありがとうございます。

【64783】Re:VBA(Excel 2003)に関する質問で...
お礼  地盤看板鞄  - 10/3/13(土) 8:48 -

引用なし
パスワード
   よろずやさん

早速回答頂きありがとうございます。

頂いたコードで表示できました。
本当に助かります。

3014 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free