プロが教えるわが家の防犯対策術!

EXCEL VBA 初心者です。
とても困っています。
助けてください。

excel2010を使っています。

今,「原本」というシートがあり,それをマクロを使って同じブック内にコピーしたいと思っています。

コピーして新しく作られたシートの名前は「A1」のセルに入力されている値にしたいです。

コピーされた後のシートにはマクロボタンは削除したいと考えています。

また,コピーした後のアクティブシートは「原本」のシートにしたいのですが

これを全部いれたコマンドはどのようになるのでしょうか。
似たような質問だったり,回答があるのですが,
どのように組み合わせたらいいのかよく分かりません。
どなたかお助けいただけないでしょうか。
よろしくお願いします。

A 回答 (4件)

こんばんは。



こちらも、#2/3さんのお考えの他にないかと作ってみました。それで、シートコピーを考えてみたのですが、マクロ自体をコピーしてはダメだと分かりましたので、Cells.Copy しかないようです。

以下は、ActiveX コントロール側のボタンのみに対応します。ActiveX コントロールのみ複数あっても全部消えてしまいます。

だから、必ず、ActiveX コントロール側のボタンにしてください。
原本シートにCommandButtonを貼り付け、それをダブルクリックすれば、マクロの起動部分が出来上がりますので、その中身のコードを貼り付けてください。

'//

Private Sub CommandButton1_Click() '←既存
 Dim shName As String
 Dim dummy As Variant
 If Range("A1").Value = "" Then Exit Sub
 shName = Range("A1").Value
 On Error Resume Next
 dummy = Worksheets(shName).Range("A1").Value
 If dummy <> "" Then MsgBox shName & " has been existed!", vbCritical: Exit Sub
 On Error GoTo 0
 Cells.Copy
 Worksheets.Add After:=Worksheets(Worksheets.Count)
 With ActiveSheet
   .Name = shName
   .Paste
   .OLEObjects.Delete
   .Range("A1").Select
 End With
 Application.CutCopyMode = False
End Sub '←既存

'//

単純な内容ですが、Excel 2003 とは、何かが違うようです。今回、初めて、Excel 2010 で作りました。なお、エラーメッセージは、英語で出ています。

_____ " has been existed!"
○○は、すでに存在します!

という意味です。

>シートのコピーを複数枚行いたいのでコピーしたときに
コピーはシート1枚ずつです。シート名が同じですとコピーできません。
    • good
    • 0

調べればすぐに判ると思うんですが・・・。



シート上のオブジェクトは

ActiveSheet.DrawingObjects.Delete

で、全部消えると思うんですけど・・・。
    • good
    • 0

別に、一つ一つ考えれば難しいコードじゃないかと。


要は「コピーを掛けておいてからシートを追加する」って
手順に気づくかどうか・・・って話じゃないかと。

今現在、「原本」シートがActiveだとして・・・。

Cells.Select
Selection.Copy

' これで、シート全体をコピーですよね

Sheets.Add
ActiveSheet.Paste

' これで追加したシートに全体を貼り付けられるかと

ActiveSheet.Name = Range("A1").Value

' これで「追加したシート」のセルA1の内容がシート名に

Sheets("原本").Activate

' で、「原本」を選択して終わり

こんな感じですかね。テストして無いので動作するかは
判りませんけど、発想はこれで行ける筈。

この回答への補足

早速の回答ありがとうございます。

試してみて新しいシートの作成は指定したセルの名前でできました。

しかしマクロボタンまでコピーされてしまいます。

シートのコピーを複数枚行いたいのでコピーしたときにマクロボタンの削除まで
同時に行いたいのですがいい方法を御存じないでしょうか。

補足日時:2012/11/20 13:18
    • good
    • 0

答えを出すのは簡単ですが、それでは勉強になりません。


その動作をマクロの記録でやってみて、どういうプログラムをマクロが作成するか見て、
自分で関数とか調べてみたらいかかでしょうか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!