Excel VBA質問箱 IV

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

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


54395 / 76738 ←次へ | 前へ→

【27137】Re:累計
回答  MokoMoko  - 05/7/29(金) 16:19 -

引用なし
パスワード
   ▼超超初心者 さん:
こんにちは。今日は夏休みで見させていただいていました。
じっくりと読んでください。

シートの使い方はどのようになっていますか、きっちりと動きますが。
   A  B   C   D   E
1  日付 HDD メモリ 基板 総計
2 2003/02
3

このようなレイアウトでしょうか。
それから、年月の指定の仕方・・・これはシリアルナンバー(1900年1月1日を
1として今日は38562です。この数字を利用していますので、そこの列の
書式の設定を正しくしてください。
A2を選択→右クリック→書式の設定
分類で「ユーザー設定」を選択
種類(T)のところにyyyy/mmとしてください。
A3・・・・A10・・・・全て書式の設定をしてください。
お分かりでしょうか?「書式のコピー/貼り付け」=箒のようなアイコンを使うと便利です。
A2からデータが入っているとしたら、下のコードでいけます。

Sub 抜け月を加え上の行と同じ数値2()  ’2にしました

Dim r As Range
 For Each r In Range("A2", Range("A65535").End(xlUp)) 'ここをA2に変更
    r.Select
    If r.Offset(1).Value <> DateSerial(Year(r.Value), Month(r.Value) + 1, Day(r.Value)) Then
       r.Offset(1).EntireRow.Insert
      r.Offset(1).Value = DateSerial(Year(r.Value), Month(r.Value) + 1, Day(r.Value))
      r.Offset(1, 1).Value = r.Offset(, 1).Value
      r.Offset(1, 2).Value = r.Offset(, 2).Value
      r.Offset(1, 3).Value = r.Offset(, 3).Value
    End If
   If r.Row = Range("A65536").End(xlUp).Row - 1 Then
   Exit Sub
   End If
 Next

End Sub

このままこのコードをコピーして張り込んで実行してください。
張り込んで、このSubにカーソルをあて、F8を押して、エクセルの画面の
変化を見られると問題なく動いていることが分かります。
月や日、時間は裏でシリアル値に変換されて動かすのが基本です。
因みに、A2 の2003年の2月はシリアル値は37653で
A3 に入った3月は37681です。
年月により1ケ月の日数が異なりますので、DateSerial関数を使います。
 
以上です。試してみてください。必ず動きます。

0 hits

【27010】累計 超超初心者 05/7/26(火) 15:16 質問
【27013】Re:累計 Jaka 05/7/26(火) 16:07 発言
【27076】Re:累計 超超初心者 05/7/28(木) 9:35 質問
【27085】Re:累計 Jaka 05/7/28(木) 16:28 発言
【27112】Re:累計 MokoMoko 05/7/29(金) 9:56 回答
【27130】Re:累計 超超初心者 05/7/29(金) 14:13 質問
【27137】Re:累計 MokoMoko 05/7/29(金) 16:19 回答
【27185】Re:累計 超超初心者 05/8/1(月) 12:16 質問
【27204】Re:累計 MokoMoko 05/8/1(月) 17:16 回答
【27237】Re:累計 超超初心者 05/8/3(水) 10:19 お礼

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