• ベストアンサー

Excelで複数のマクロを一本化する方法

Macro5とMacro6を組み合わせて下記のような処理をさせたいのですが方法がわかりません。 お知恵をお貸しください。 1 日付を確認する 2 Macro6でコピー 3 日付にあわせてMacro5で貼り付け   今日が1日ならC14から貼り付け   2日ならC25から貼り付け   3日ならC36から貼り付け    ・      ・    ・   31日ならc344から貼り付け 作成したマクロ ' Macro5 Macro ' マクロ記録日 : 2007/4/25 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+r ' Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub Sub Macro6() ' Macro6 Macro ' マクロ記録日 : 2007/4/25 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+q ' Range("C2:AD12").Select Selection.Copy End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

Sub test01() Dim td, x td = Day(Date) x = (td - 1) * 11 + 14 MsgBox "今日は" & td & "日ですので、C" & x & "から貼り付けます。" With ActiveSheet .Range("C2:AD12").Copy .Range("C" & x).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone End With End Sub

その他の回答 (3)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

C2:AD12をコピーして、日付によって貼り付ける位置を変えて値として貼り付けるマクロです。日付を入力するセルは仮にC1としています。マクロに二行目を実際のシートに合わせて修正してください。 Sub Macro6plus5() Const DtAdrs As String = "C1" '日付が入るセルアドレス  If IsDate(Range(DtAdrs)) Then   ActiveSheet.Range("C2:AD12").Copy   ActiveSheet.Cells(Day(Range(DtAdrs)) * 11 + 3, "C").PasteSpecial Paste:=xlPasteValues   Application.CutCopyMode = False  Else   MsgBox ("日付型で日付を入力してください")  End If End Sub

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

こんな感じでしょうか? Sub test() Dim Hizuke As Integer Hizuke = (Day(Date) - 1) * 11 + 14 Sheets("sheet1").Activate Range("C2:AD12").Copy Sheets("sheet2").Activate Range("C" & Hizuke).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

こんな感じでしょうか? Sub Macro7() Call Macro6 Cells(Day(Date) * 11 + 3, 3).Select Call Macro5 End Sub