シートのコピー&ペーストがしたくて、以下のPGを
組みましたが、うまくいきません。
(1)(2)と二通り試してみましたが、両方だめでした。
どなたか、おわかりになるかた、教えてください。
for i = 1 To page_cnt
(1)Sheets.Add
ActiveSheet.Name = "請求書(控)" & i
Sheets("請求書" & i).Select
sheet_name = "請求書(控)" & i
Sheets(sheet_name).Cells("A1").Select
Selection.Paste
(2)
Sheets.Add
ActiveSheet.Name = "納品書(控)" & i
Sheets("納品書" & i).Cells.Copy
Sheets("納品書(控)" & i).Paste
Next
No.1ベストアンサー
- 回答日時:
原形を変えずに少し修正しました。
(1)のみ。前後のことは分かりませんが、シートを追加して内容をコピーするはずです。『(控)』の()が全角、半角と違っている見たいですが、質問の時の入力ミスですかね。VBEのHelpを見ると、違う書き方もあります。 ご参考に。デハ。
Sheets.Add
ActiveSheet.Name = "請求書(控)" & i
Sheets("請求書" & i).Cells.Copy
sheet_name = "請求書(控)" & i
Sheets(sheet_name).Select
ActiveSheet.Paste
No.2
- 回答日時:
まず(1)について
Sheets("請求書" & i).Select
ここで、コピー元のシートを選択しているわけですね。
これをメモリにコピーしないといけませんね。
↓
Sheets("請求書" & i).Select
Selection.Copy
ですね。次に、
sheet_name = "請求書(控)" & i
ここでコピー先のシート名をつけているのですね。
でもここでsheet_nameに代入しないで、
シートを作成してシート名をつけた時に代入したほうがいいとおもいます。
↓
Sheet.Add
ActiveSheet.Name = "請求書(控)" & i
sheet_name=ActiveSheet.Name
そして貼りつけるシートの指定です。
Sheets(sheet_name).Activate
Sheets(sheet_name).Range("A1").Paste
従って、(1)は
Sheet.Add
ActiveSheet.Name = "請求書(控)" & i
sheet_name=ActiveSheet.Name
Sheets("請求書" & i).Select
Selection.Copy
Sheets(sheet_name).Activate
ActiveSheet.Paste
と、してみてはどうでしょう。おおざっぱなので、間違ってるところがあるかもしれません。
(2)の場合も、コピー先のシートをアクティブにしていません。
まずコピー元のシートをコピーし、貼りつけるシートをアクティブにしてペーストしてみてはどうでしょうか?
No.3
- 回答日時:
PasteSpecialではどうでしょう。
エクセル2000なら出来ます。97ではどうかな。下記をModule1にいれて、Sheet1のA1に仮に「123」を入力し実行したら、各シートのA1に「123」が入りました。----------
Sub aaa000()
page_cnt = 3
Worksheets("sheet3").Activate
Range("a1").Copy
For i = 1 To page_cnt
Sheets.Add
ActiveSheet.Name = "請求書(控)" & i
' Sheets("請求書" & i).Select
sheet_name = "請求書(控)" & i
' Sheets(sheet_name).Cells("A1").Select
' Selection.Paste
ActiveSheet.Range("a1").PasteSpecial
Next i
End Sub
私の経験では、CopyはRangeを指定してRange("a1").Copyの
ように出来る。ActivateSheetにしてからでなくてもWorksheets("sheet3").Range("a1").Copyと出来る。
しかしPasteはActiveSheetに対してしか出来ない。
Rangeに対して出来ない。私も何回も失敗して今だに良く
なぜそうするのか分からない。初めての者を引っ掛ける
腹の立つところ。「どうせマイクロソフトが決めたことだもの」。
ActiveSheet.Pasteしかできない。PasteSpecialならそれが出来る。
なおSheets.Addすると挿入したSheetがActiveになるようです。この点充分自信がないのでご自分でもテストして
勉強してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Excel(エクセル) VBAのoffsetの動き方について教えてください 3 2022/11/25 23:36
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) 集計シートA列のコードと一致する右に並んだシート名(コード)の3行目から10行目をコピーして貼り付け 4 2022/08/18 15:24
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) VBAで、シート間の転記するコードをFOR~NEXTで教えてください。 9 2023/04/30 20:04
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/03/25 08:33
- Visual Basic(VBA) userformでSheetを選択して開くコード 1 2023/05/15 16:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで入力シートから別シ...
-
VBA セルの値と同じ名前のシー...
-
VBAのoffsetの動き方について教...
-
Excelの中央値の複数条件について
-
エクセルのワークシートが重く...
-
Excel VBAを使った重複行の抜き...
-
エクセルファイルを軽くする方法
-
Excel 複数のシートからグラフ...
-
エクセル マクロを使って日々...
-
ピボットテーブルから抽出デー...
-
エクセル 毎日更新する表のデ...
-
エクセル シフト勤務表から、...
-
Excel:グラフの元データをグル...
-
2つ条件である文字の値を参照し...
-
Excelの選択肢をポップアップリ...
-
複数のシートからデータを抽出...
-
テキストボックス内の文字のふ...
-
Excelで数値→文字列変換で指数...
-
エクセルにおける、グラフの指...
-
エクセル
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで入力シートから別シ...
-
VBA セルの値と同じ名前のシー...
-
Excel 複数のシートからグラフ...
-
ExcelVBAで、指定したシートに...
-
Excelの中央値の複数条件について
-
Excel ハイパーリンク先のセル...
-
IF, ISNUMBER, INDIRECTの組み...
-
エクセルのワークシートが重く...
-
VBAでシート名をセルから取得し...
-
エクセルで入力→日付を自動判別...
-
質問:特定文字列から空白行ま...
-
エクセル自動の年月
-
エクセル シフト勤務表から、...
-
エクセル マクロを使って日々...
-
VBAのoffsetの動き方について教...
-
エクセルVBA:表の内容を担当者...
-
Excel日付変更との参照先の連動
-
EXCEL VBA 一致しないデータの...
-
エクセルについて質問です 日付...
-
Excelの選択肢をポップアップリ...
おすすめ情報