Excel VBA質問箱 IV

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

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


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

【38041】keinさん コジマ 06/5/25(木) 13:50 質問[未読]
【38046】Re:keinさん Kein 06/5/25(木) 14:32 回答[未読]
【38055】Re:keinさん コジマ 06/5/25(木) 15:25 質問[未読]
【38056】Re:keinさん Kein 06/5/25(木) 15:30 発言[未読]
【38058】Re:keinさん コジマ 06/5/25(木) 15:40 お礼[未読]

【38041】keinさん
質問  コジマ E-MAIL  - 06/5/25(木) 13:50 -

引用なし
パスワード
   例えば2006年度シートに、
日付  |商品名  |個数|住所     | 
4月15日|子供服  |5 |東京都足立区〜|
4月23日|大人服  |4 |東京都杉並区〜|
5月4日 |紳士服  |15|茨城県〜   |
という風に入力したとして、
4月シートに
日付  |商品名  |個数|住所     | 
4月15日|子供服  |5 |東京都足立区〜|
4月23日|大人服  |4 |東京都杉並区〜|
5月シートに
5月4日 |紳士服  |15|茨城県〜   |
と、自動的に月別シートに表示できたらなぁという質問です。
説明うまくできなくてすみません。。

【38046】Re:keinさん
回答  Kein  - 06/5/25(木) 14:32 -

引用なし
パスワード
   あぁ・・そーいうことですか、分かりました。
ならば項目数が 4 であることを前提に、以下のマクロを各モジュールに入れ、
いったんブックを保存して閉じ、再度開いてから2006年度シートにデータを
入力してみて下さい。A:D列に間違いなく4つのデータを入れたとき、その月の
シートへ自動的に転記します。また、その際にコピー先で重複した値があれば、
メッセージを出してから入力したところをクリアして終わります。

[標準モジュール]

Sub Auto_Open()
  Dim i As Integer

  For i = 1 To 12
   With Sheets(i & "月")
     If Not IsEmpty(.Range("A2").Value) Then
      .Range("AA:AA").ClearContents
      .Range("A2", .Range("A65536").End(xlUp)) _
      .Offset(, 26).Formula = "=CONCATENATE($A2,$B2,$C2,$D2)"
     End If
   End With
  Next i
End Sub

[2006年度シートのシートモジュール]

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim MyR As Range
  Dim Sn As String, CkSt As String
  Dim MyV As Variant

  With Target
   If .Column <> 4 Then Exit Sub
   If .Row = 1 Then Exit Sub
   If IsEmpty(.Value) Then Exit Sub
   With .Offset(, -3)
     If Not IsDate(.Value) Then Exit Sub
     Sn = Month(.Value) & "月"
     Set MyR = .Resize(, 4)
   End With
  End With
  With Application
   If .CountA(MyR) < 4 Then
     MsgBox "A" & .Row & ":D" & .Row & _
     " に未入力のセルがあります", 48
     Set MyR = Nothing: Exit Sub
   End If
   MyV = .Transpose(.Transpose(MyR.Value))
   CkSt = Join(MyV, "")
   If Not IsError(.Match(CkSt, Sheets(Sn).Range("AA:AA"), 0)) Then
     MsgBox "そのデータは既にコピー済みです", 48
     .EnableEvents = False
     MyR.ClearContents
     .EnableEvents = True
   Else
     MyR.Copy Sheets(Sn).Range("A65536").End(xlUp).Offset(1)
   End If
  End With
  Set MyR = nothing
End Sub 

【38055】Re:keinさん
質問  コジマ E-MAIL  - 06/5/25(木) 15:25 -

引用なし
パスワード
   ありがとうございます!でもマクロを使ったことないので、マクロを各モジュールに入れるのがわからないのです。。教えてもらってよろしいでしょうか?

【38056】Re:keinさん
発言  Kein  - 06/5/25(木) 15:30 -

引用なし
パスワード
   ↓こちらを参考にして下さい。
http://park11.wakwak.com/~miko/Excel_Note/14-01_macro.htm#14-01-01

【38058】Re:keinさん
お礼  コジマ E-MAIL  - 06/5/25(木) 15:40 -

引用なし
パスワード
   本当にありがとうございました。

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