Excel VBA質問箱 IV

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

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


8746 / 13646 ツリー ←次へ | 前へ→

【31323】日付けが変るとその行が削除され一段上に上がる タカ 05/11/17(木) 13:46 質問[未読]
【31324】Re:日付けが変るとその行が削除され一段上... 05/11/17(木) 14:02 発言[未読]
【31326】Re:日付けが変るとその行が削除され一段上... Kein 05/11/17(木) 15:41 回答[未読]
【31328】Re:日付けが変るとその行が削除され一段上... タカ 05/11/17(木) 16:45 お礼[未読]
【31329】Re:日付けが変るとその行が削除され一段上... Kein 05/11/17(木) 17:02 回答[未読]
【31332】Re:日付けが変るとその行が削除され一段上... タカ 05/11/17(木) 18:09 お礼[未読]
【31334】Re:日付けが変るとその行が削除され一段上... Kein 05/11/17(木) 19:46 発言[未読]
【31341】Re:日付けが変るとその行が削除され一段上... タカ 05/11/17(木) 23:47 お礼[未読]
【31359】Re:日付けが変るとその行が削除され一段上... Kein 05/11/18(金) 13:50 回答[未読]
【31360】Re:日付けが変るとその行が削除され一段上... Kein 05/11/18(金) 13:51 発言[未読]
【31400】Re:日付けが変るとその行が削除され一段上... タカ 05/11/18(金) 17:32 お礼[未読]
【31405】Re:日付けが変るとその行が削除され一段上... Kein 05/11/18(金) 20:10 回答[未読]
【31410】Re:日付けが変るとその行が削除され一段上... タカ 05/11/19(土) 8:47 お礼[未読]
【31415】Re:日付けが変るとその行が削除され一段上... Kein 05/11/19(土) 16:05 回答[未読]
【31419】Re:日付けが変るとその行が削除され一段上... タカ 05/11/19(土) 17:57 お礼[未読]

【31323】日付けが変るとその行が削除され一段上に...
質問  タカ E-MAIL  - 05/11/17(木) 13:46 -

引用なし
パスワード
   sheet1・2・3がありsheet2のB2に今日の日付け、その下に次の日・・・(40日)となっています。次の日になるとその行すべての情報が削除され前の日の行が全て上がるようにしたいので。過去の投稿であったのですが、初心者なもんでうまく出来ません。詳しくどこに入力したらいいのか教えて下さい。
sheet2
         1 2 3 4
17年11月17日  A B C D
17年11月18日  E F G H
   ・
   ・
   ・
次の日
         1 2 3 4
17年11月18日  E F G H
17年11月19日  I J K L
   ・
   ・
   ・
となるようにしたいのですが、よろしくお願いします。

【31324】Re:日付けが変るとその行が削除され一段...
発言    - 05/11/17(木) 14:02 -

引用なし
パスワード
   こんにちは。

Format関数などを使って、今日の日付とそのセルにかかれている
日付を比べて、今日より前だったらその行を削除するような条件文を
かけば処理が出来そうに思います。
コードがなかったので、どうかいたら伝わるかわかりかねますが。

【31326】Re:日付けが変るとその行が削除され一段...
回答  Kein  - 05/11/17(木) 15:41 -

引用なし
パスワード
   もっとも簡単なコードは

Sub Del_R()
  Dim Ck As Variant

  Ck = Application.Match(CLng(Date) - 1, Range("B:B"), 0)
  If Not IsError(Ck) Then
   Rows("2:" & Ck).Delete xlShiftUp
  End If
End Sub

でしょうか。

【31328】Re:日付けが変るとその行が削除され一段...
お礼  タカ E-MAIL  - 05/11/17(木) 16:45 -

引用なし
パスワード
   ありがとうございます。すごい!!削除されていきます。これをファイルを開いたときに機能させたいのですが・・・すみませんがお願いします。

【31329】Re:日付けが変るとその行が削除され一段...
回答  Kein  - 05/11/17(木) 17:02 -

引用なし
パスワード
   ならば、実際のシート名が分からないと正しいコードになりませんが

Private Sub Workbook_Open()
  Dim Ck As Variant

  With Worksheets("Sheet1") '←処理対象のシートを指定する
   Ck = Application.Match(CLng(Date) - 1, .Range("B:B"), 0)
   If Not IsError(Ck) Then
     .Rows("2:" & Ck).Delete xlShiftUp
   End If
  End With
End Sub

と変更して、ThisWorkbookモジュールに入れてブックを保存して下さい。

【31332】Re:日付けが変るとその行が削除され一段...
お礼  タカ E-MAIL  - 05/11/17(木) 18:09 -

引用なし
パスワード
   すごい!すごすぎる!!シート名はそのままでしたのでバッチリでしたが、今日から30日間の日付けはそのまま残したいのですが・・・?あと勉強するにはどんなものがいいですか?自分で、もっといろいろできるよになりたのですが?

【31334】Re:日付けが変るとその行が削除され一段...
発言  Kein  - 05/11/17(木) 19:46 -

引用なし
パスワード
   >今日から30日間の日付けはそのまま残したい
30日「前まで」ですか、それとも「後まで」ですか ?
>勉強するにはどんなものがいいですか?
まず、初心者向けにVBAの手ほどきをしているサイトを見て下さい。
一ヶ所だけでなく、いろいろ探すこと。そのようなところで基礎を学んだら、
なるべく大きな本屋へ行って、中級者向けの参考書をいくつか立ち読みします。
内容が 1/5 ぐらい分かるような本を選んで購入してください。
今は残りの 4/5 が理解できなくても結構です。のちのち重宝する
ようになりますから。そして今度はこのようなQ&Aサイトのスレッドを
片っ端から見て回ること。サンプルコードが出ていたら、それをモジュール
にコピペして、知らない単語にカーソルを合わせ、[F1]キーを押して
ヘルプで意味を調べます。そーした練習を繰り返しているうち、だんだん
実力がついていきます。参考書の出番はその頃になります。後は加速度的に
理解が進むようになります。そーなってくるとプログラミングの面白さが
分かるようになります。ある程度自覚しながら、ハマッてみて下さい(笑)。
で、もうそこから先は、あなた次第になります。VBAに関連してWSH,VBS,XLMや
WMI、さらにはデータベースとの連携を可能にするDAOやADOなど、いろいろな
関連に手を広げてスキルアップしていけば良いでしょう。

【31341】Re:日付けが変るとその行が削除され一段...
お礼  タカ E-MAIL  - 05/11/17(木) 23:47 -

引用なし
パスワード
   勉強の仕方ありがとうございます。こつこつとやっていきたいと思います。
それから日付けですが30日後まで表示さしたいのですが・・・お願いします。

【31359】Re:日付けが変るとその行が削除され一段...
回答  Kein  - 05/11/18(金) 13:50 -

引用なし
パスワード
   つまり、本日から30日以上の日付が入力されていたら、マクロを中止するという
ことでいいのでしょーか ? それならこんな感じになりますが。

Private Sub Workbook_Open()
  Dim Ck As Variant

  With Worksheets("Sheet1") '←処理対象のシートを指定する
   If .Range("B65536").End(xlUp).Value <= DateAdd("d", 30, Date) Then      Exit Sub
   End If 
   Ck = Application.Match(CLng(Date) - 1, .Range("B:B"), 0)
   If Not IsError(Ck) Then
     .Rows("2:" & Ck).Delete xlShiftUp
   End If
  End With
End Sub

【31360】Re:日付けが変るとその行が削除され一段...
発言  Kein  - 05/11/18(金) 13:51 -

引用なし
パスワード
   If .Range("B65536").End(xlUp).Value <= DateAdd("d", 30, Date) Then
  Exit Sub
End If 

です。うまく改行されませんでした。

【31400】Re:日付けが変るとその行が削除され一段...
お礼  タカ E-MAIL  - 05/11/18(金) 17:32 -

引用なし
パスワード
   何度もすみません。sheet1のB2に今日の日付けでB31に30日後の日付けがくるよにして、1日たてばB2の行が削除され次の日の行がきて、B31にはB2の30日後が表示されるようにしたいのですが・・・

【31405】Re:日付けが変るとその行が削除され一段...
回答  Kein  - 05/11/18(金) 20:10 -

引用なし
パスワード
   それなら一度、全部クリアしてから、改めて30日分を入力する方が
すっきりすると思います。コードはブックオープンイベントのままで

Private Sub Workbook_Open()
  With Worksheets("Sheet1").Range("B2")
   .Resize(50).ClearContents
   .Value = Format(Date, "yyyy/m/d")
   .DataSeries xlColumns, xlChronological, _
    , , DateAdd("d", 29, Date)
   .EntireColumn.AutoFit
  End With 
End Sub

と、なります。

【31410】Re:日付けが変るとその行が削除され一段...
お礼  タカ E-MAIL  - 05/11/19(土) 8:47 -

引用なし
パスワード
   すみません、日付けはバッチリでしたが、こちらの説明不足で申し訳ないのですが、C列にはその日の予定が入ってまして、C列以降も日付けと連動して上にずれ行き、30日目のところには新しい行が挿入されるようにしたいのですが・・・?
それと今は、一人で使っているのですが、これを複数の人が予定表のところに同時に入力したり、変更したりすることは、可能なのでしょうか?

【31415】Re:日付けが変るとその行が削除され一段...
回答  Kein  - 05/11/19(土) 16:05 -

引用なし
パスワード
   では「本日から30日後の日付が消えてしまったら、消えた分だけ追加する。」
というコードにすればいいのですね ? それならこんな感じになります。

Private Sub Workbook_Open()
  Dim Ck As Variant
  Dim xDy As Date

  xDy = DateAdd("d", 29, Date)
  With Worksheets("Sheet1") '←処理対象のシートを指定する
   Ck = Application.Match(CLng(Date) - 1, .Range("B:B"), 0)
   If Not IsError(Ck) Then
     .Rows("2:" & Ck).Delete xlShiftUp
   End If
   With .Range("B65536").End(xlUp)
     If .Value < xDy Then
      .DataSeries xlColumns, xlChronological, , , xDy
     End If 
     .EntireColumn.AutoFit
   End With
   .Activate
  End With
End Sub

【31419】Re:日付けが変るとその行が削除され一段...
お礼  タカ E-MAIL  - 05/11/19(土) 17:57 -

引用なし
パスワード
   何度もありがとう御座います。すごいです!完璧です!!
ひとつひとつ見て勉強していきたいと思います。

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