- ベストアンサー
Excelで月別Sheetを呼び出すマクロの作成方法
- Excelで月別のSheetを呼び出すマクロを作成する方法について教えてください。
- 月別の成績表を作成する際に、各月の転記用のSheetをマクロでコピーしたいです。
- 月ごとに異なるSheetを自動的に選択し、コピーするマクロを作成したいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
そのまま実行するなら、以下のようにコードを修正してください(&と文字列などの間にスペースが必要)。 Sub Macro1() Dim Tuki As Integer Dim Tuki2 As Integer Tuki = Range("a1").Value If Tuki < 3 Then Tuki2 = Range("a1").Value + 10 Else Tuki2 = Range("a1").Value - 2 End If Sheets(Tuki2 & "月転記").Select Cells.Select Selection.Copy Sheets(Tuki & "月成績").Select
その他の回答 (3)
- mar00
- ベストアンサー率36% (158/430)
' テスト作成 ' Macro1 Macro ' ' Keyboard Shortcut: Ctrl+a Dim Tuki1 As Integer Dim Tuki2 As Integer Tuki1 = Range("A1").Value Select Case Tuki1 Case 1, 2 Tuki2 = Tuki1 + 10 Case Else Tuki2 = Tuki1 - 2 End Select Sheets(Tuki2 & "月転記").Select Cells.Copy Sheets(Tuki1 & "月成績").Select Cells.Select ActiveSheet.Paste Range("E5:F5").Select Range(Selection, Selection.End(xlDown)).Select ではどうでしょうか。
お礼
入力したところ、順調に作動しました。 いろいろな操作方法があるのですね、益々興味が出てきました。 マクロについてもっともっと勉強します。 ありがとうございました。
- mar00
- ベストアンサー率36% (158/430)
テスト作成を動かしてエラーになった時にデバッグすると Sheets(Range("A1").Value&"月成績").Selectのところで エラーになっているのでは? Dim Tuki As Integer SHEET_NAME = ActiveSheet.Name これを追加する If Range("a1").Value < 3 Then Sheets(Range("A1").Value&"月成績").Selectを Sheets(SHEET_NAME).Select にすれば うまく動くのではないかと思います。
お礼
初心者に早速教えて頂きありがとうございました。 MackyNo1 様のご指導でうまく動くようになりましたので解決しました。
補足
本当にすみません。 上記に変更するも、 Sheets(Tuki&"月転記").Select の部分が赤色になり、 この部分で、エラーとなってしまいます。 どうぞよろしくお願いします。
- MackyNo1
- ベストアンサー率53% (1521/2850)
マクロを実行するシートのA1セルに「7」のような数字を入力する場合、現在のコードの前に以下のようなコードを追加し、シート名を参照する部分を以下のように変更してみて下さい。 Dim Tuki As Integer If Range("a1").Value < 3 Then Tuki = Range("a1").Value + 10 Else Tuki = Range("a1").Value - 2 End If 変更するコード Sheets("5月転記").Select → Sheets(Tuki&"月転記").Select Sheets("7月成績").Select → Sheets(Range("A1").Value&"月成績").Select
お礼
すごい、 早速にありがとうございます。 ど素人ですみません。 下記のように既存マクロに追加記入をしてみましたが、 コンパイルエラー 構文エラー と表示されうまく動きません。 どうぞよろしくお教え頂ければありがたいです。 Sub Macro1() ' テスト作成 ' Macro1 Macro ' ' Keyboard Shortcut: Ctrl+a Dim Tuki As Integer If Range("a1").Value < 3 Then Tuki = Range("a1").Value + 10 Else Tuki = Range("a1").Value - 2 End If Sheets(Tuki&"月転記").Select Cells.Select Selection.Copy Sheets(Range("A1").Value&"月成績").Select Cells.Select ActiveSheet.Paste Range("E5:F5").Select Range(Selection, Selection.End(xlDown)).Select すみません、 お礼入力のこの欄で再質問をしても良いのかもわかりません。 初心者ですみません。
お礼
非常にスピーディーで、かつ親切丁寧に教えて頂きありがとうございました。 感謝しております、これを機会にいろいろマクロの勉強をしたいと思います。 またお世話になるかもわかりませんが、よろしくお願いします。 本当にありがとうございました。