- ベストアンサー
マクロの組み方ですが
「入力シート」を作成し、日々その日の売上日報を入力しています。 今は日々名前をつけて保存しているのですが、 「入力シート」の横に「1日」「2日」「3日」・・・と1か月分のシートを作成し、「入力シート」内で入力した日付に対応したシートに 日々コピーする事は出来ないでしょうか? マクロを使ってみたのですが、初心者の為、せいぜい「入力シート」を別のシートにコピー出来ただけで、 日付に対応したシートにコピーする事ができません。 どのようにすればよいでしょうか? 教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 #2さんの回答で解決と思いますが、、、 ちょっと違うアプローチのサンプルを挙げておきます。 事前に日付毎のシートを用意せず、シート名「入力」のセルC1の値によってその都度作成する例です。 参考まで。 Sub Test() Dim ws As Worksheet, tSheet As Worksheet, sName As String Set tSheet = Worksheets("入力") sName = tSheet.Range("C1").Text & "日" '同一シートが無いかチェック For Each ws In Worksheets If ws.Name = sName Then MsgBox sName & "のシートは既にあります。" & vbCrLf & _ "日付を見直して下さい。", vbExclamation, "重複" Exit Sub End If Next ws 'シートを追加して処理 Set ws = Worksheets.Add(after:=Worksheets(Worksheets.Count)) tSheet.Cells.Copy Destination:=ws.Cells ws.Cells.Copy ws.Cells.PasteSpecial xlPasteValues On Error Resume Next ws.Name = sName Application.CutCopyMode = False tSheet.Activate End Sub
その他の回答 (2)
- pkh4989
- ベストアンサー率62% (162/260)
こんにちは。 こんな感じかな~ Sub 入力データ貼付け() Dim WS As String ' With ActiveSheet '←入力シート WS = .Range("C1") '入力値(1~31) WS = WS & "日" 'シート名が(1日~31日)の場合、→ 1~31の場合は不要 Selection.Copy '選択範囲をコピー Sheets(WS).Range("A1").PasteSpecial Paste:=xlValues .Range("D7").Select End With End Sub
- papayuka
- ベストアンサー率45% (1388/3066)
Excelだと思いますけど、、、一応ソフトは何でしょう? 日々のシートと入力シートのデータの持ち方が解らないのですが、入力シートを日々の名前で保存しているならば、日々のシートと入力シートは同様の書式って事でしょうか? ならば毎日、それぞれのシートに入力すれば良いだけに思いますけど、、、 > せいぜい「入力シート」を別のシートにコピー出来ただけで、 各シートの構成とシート名、このマクロを提示された方が良いかも。
補足
すみません・・・エクセルです。入力シートも日々のシートも同じ書式で作成しています。 日々の名前で保存しているのですが、その保存の仕方では他の作業に支障が出てしまって・・・。会社内のことなので詳しくは・・・ 「入力シート」に売上金額や商品番号など入力したものを、その日付に応じた「○日」のシートに「値だけ」貼り付けをしていこうと思います。 エクセルのマクロで作成したのですが、精々以下のことしか出来ず・・・ Cells.Select Selection.Copy Sheets("1日").Select Cells.Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("D7").Select End Sub 入力シートのセルC1などに、日付(1など)を入力しておくと、その日付の数字に対応したシートへコピーが出来ないかと思っているのですが。 パソコンに詳しくなく、見よう見まねでマクロをしています。 この程度の説明しかできませんが、どうぞよろしくお願いします。