- ベストアンサー
エクセルマクロエラーによるシート名保存のエラー
- エクセルのマクロを使用してシート名を保存する際にエラーが発生しました。
- グラフをシートに追加するとエラーが発生するため、解除する方法を知りたいです。
- シートにグラフを追加するとエラーが発生し、解除することができません。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>申し訳ない >コードが少し間違ってました Sheets("原本").Range("A1:K73").Copy Sheets("原本").Range("A1") が正解だと仮定すると「原本シートのA1~K73を、原本シートのA1~K73に貼り付ける」という事になり「無意味なプログラム」になります。 なお「非アクティブまたはセレクト状態にないシートには、グラフはペーストできない」のは、別の回答で説明した通りですから「ペースト先となる原本シートをアクティブにしてセレクトしてからコピー&ペーストを実行する必要がある」のは変わりません。 Sheets("原本").Range("A1:K73").Copy Sheets("原本").Range("A1") の前に Sheets("原本").Activate Sheets("原本").Select の2行を足してみて下さい。 なお「グラフを含むセルを、自分自身に貼り付けする」のは、もしかしたら「どうやっても不可能で、必ずエラーになる可能性が高い」ので、上記2行を足しても、エラーは消えないかも知れません(つまり、そういうコピー&ペーストは、実行不可能って事です)
その他の回答 (3)
- kkkkkm
- ベストアンサー率66% (1719/2589)
> Sheets("原本").Range("A1:K73").Copy Sheets("原本").Range("A1") ここでエラーになるという事ですね。 しかし、この操作は原本のA1:K73を同じところにコピーしているだけですし必要ないと思うのですが、何か意味があるのでしょうか。 とりあえず Sheets("原本").Range("A1:K73").Copy Sheets("原本").Range("A1:K73").PasteSpecial Application.CutCopyMode = False にしたらどうなるでしょう。
お礼
ありがとうございます やっぱりエラーのままみたいです
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
このエラーは「セレクト状態になってないシートにグラフを挿入しようとした場合に発生するエラー」なので、「グラフを含むセル範囲をコピーする前」に「コピー先のシートをセレクトする必要」があります。 Sheets("原本").Range("A1:K73").Copy Sheets("1原本").Range("A1") を実行する前に Sheets("1原本").Select を実行してみて下さい。 Sub 保存() Dim MySheetName As Variant MySheetName = InputBox("シート名を入力してください") If MySheetName = "" Then Exit Sub Sheets("1").Copy After:=Sheets(Worksheets.Count) ActiveSheet.Name = MySheetName 'コピー先シートの「1原本」シートをセレクトする Sheets("1原本").Select Sheets("原本").Range("A1:K73").Copy Sheets("1原本").Range("A1") '元のアクティブシートをセレクトし直す Sheets(MySheetName).Select End Sub
補足
申し訳ない コードが少し間違ってました Sub 保存() Dim MySheetName As Variant MySheetName = InputBox("シート名を入力してください") If MySheetName = "" Then Exit Sub Sheets("1").Copy After:=Sheets(Worksheets.Count) ActiveSheet.Name = MySheetName Sheets("原本").Range("A1:K73").Copy Sheets("原本").Range("A1") End Sub このコードです
- kkkkkm
- ベストアンサー率66% (1719/2589)
私の環境2013ではエラーにならないのですが、デバッグを押したらコードのどこが黄色で選択表示されるでしょうか。 また、保存という名前ですが記載されているコードの後に保存するためのコードが記載されていてそちらになにか変なところがあるという事はないでしょうか。
補足
Sheets("原本").Range("A1:K73").Copy Sheets("1原本").Range("A1") この部分でエラーがでます
お礼
ありがとうございます エラーのままでした 教えて貰いながら作ったため 不十分で申し訳ないです