• ベストアンサー

元データのシートにあるボタンを押すと、後ろのシートにデータをそのままコピーされてシートが追加できるようにしたい

大変困っています。 会員マスタという元データを作成し、そのシートに「シート追加」という ボタンを作りました。 そのボタンを押すと、元データのシートの後ろにそのまま同じデータがコピーされて追加される様にVBAで設定したいです。 ・行などはずれない様に設定したい。 ・シート名は変更できるようにしたい。 ・コピーして追加したシートにはボタンは表示されないようにしたい。 急いでます。知恵を貸してください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

どんどん作るsheetに同じ名前は付けられませんので、連番にします。 'sheetの存在チェック Private Function isExistSheet(sheetName As String) As Boolean Dim ws As Worksheet For Each ws In Worksheets If ws.name = sheetName Then isExistSheet = True Exit Function End If Next isExistSheet = False End Function '新しいシート名の検索 Function GetNewSheetName(newSheetName As String) As String Dim n As Integer n = 1 Do If isExistSheet(newSheetName & str(n)) = False Then Exit Do End If n = n + 1 Loop GetNewSheetName = newSheetName & str(n) End Function Private Sub ボタン11_Click() Dim ws As Worksheet Dim newSheetName As String newSheetName = "新しいシート" '追加シートの先頭名(適当な名前を付けてください) Set ws = Worksheets.Add(after:=Worksheets(Worksheets.Count)) '新しいシートを最後のシートの後ろに作る Sheets("会員マスタ").Cells.Copy Destination:=ws.Cells(1, 1) '会員マスタのCellデータを新しいシートにコピー ws.name = GetNewSheetName(newSheetName)'新しいシート名 End Sub

mom0333
質問者

お礼

このようにやりたかったんです。 ありがとうございます。 すごいですね!! 無事に完了しました。 ご丁寧に ありがとうございました。

その他の回答 (3)

回答No.3

Private Sub シート追加_Click() の部分を Private Sub ボタン11_Click() にしたらどうでしょうか? CommandButtonには、オブジェクト名と、ボタンに表示される文字(Caption)があります。 エラーからすると、「シート追加」と言うボタンは、オブジェクト名が「ボタン11」でCaptionが「シート追加」になっているんじゃないかと思います。 上記でもだめなようなら、デザインモードでコマンドボタンをダブルクリックしてみてください。 自動的に Private Sub ボタン11_Click() End Sub と言うモジュールが作られると思います。 その中に回答のモジュールをコピーしてみてください。

mom0333
質問者

補足

出来ました!!ありがとうございます。 あともう1つだけお願い致します。 ボタンを押すとどんどん後ろにシートが追加されるようにしたいのですが、それにはどうしたらよいですか?

回答No.2

これではどうでしょう Private Sub シート追加_Click() Dim ws As Worksheet Set ws = Worksheets.Add(after:=Sheets("会員マスタ")) '新しいシートをsheets("会員マスタ")の後ろに作る Sheets("会員マスタ").Cells.Copy Destination:=ws.Cells(1, 1) '会員マスタのCellデータを新しいシートにコピー ws.Name = "新しいシート" '追加したシートの名前を変更 End Sub

mom0333
質問者

補足

なんどもすみません。 マクロの内容はばっちりなんだと思うのですが、設定の仕方が悪いらしく ボタンをクリックすると「マクロ′会員マスタ.xls!ボタン11_click'が見つかりません」と出てしまいます。 どのように設定したらよいでしょうか?

回答No.1

こんなのではどうですか? Private Sub CommandButton1_Click() Dim ws As Worksheet Set ws = Worksheets.Add(after:=Me) Me.Cells.Copy Destination:=ws.Cells(1, 1) ws.Name = "新しいシート" End Sub

mom0333
質問者

補足

ありがとうございます。早速やってみたのですが、ボタンを押しても見つかりませんとメッセージが出てしまいます。また、MEの部分を変更してくださいと出るのですがどうしたらいいでしょうか? すみません、VBA初心者なので・・・。 ちなみにさくせいしたボタンの名前は”シート追加”です。 元データが入っているシートの名前は"会員マスタ”になります。

関連するQ&A

  • エクセル2003 特定セル範囲のみをコマンドボタンでコピー・貼り付けたい

    タイトルの通りなのですが、ただ今会員マスタ原本というシートを作成しています。 その中にコマンドボタン(表追加)を作り、ボタンを押すと、B39:U48のセルの作成データが上記のセルの下にどんどん追加される様にVBAを区みたいです。 (1) 表がずれないようにコピーをしたままの状態で貼り付けしたい。 (2) シートは同一シート内。B39:U48のセルの下に貼り付けたい。 (3) ボタンを押すたびにどんどん追加される。 (4) 貼り付けの状態は1行空けた状態で張り付いて欲しい。

  • 既存シートにデータ追加したい

    ■マスターシート 日付 商品 個数 付加データ ↓ (項目列ごとに下記追加されていきます) (付加データだけは月末に一括手入力) ↓ ■納品書TMPシート ■日付名シート納品書(印刷用) --------------------------- 現在、マスターシートから、納品書TMPシートを使い、 同ブック内に日付名シートの納品書(付加データ除く)をVBAで作成しています つまり、付加データだけが入力されてない納品書が日付名シートで作成されます 月末の処理都合上、マスターシートへ付加データ一括入力して 既に作成されている各日付名シートに追加転記させたいのです マスターデータの項目日付と日付名シートが一致の場合、 その日付の付加データを抽出し、該当の納品書へ転記する 関数VLOOKUPなどで、各納品書に表示はできるのですが、 都合上月初にマスターデータをクリアしなければならず、 そうした場合、表示エラーになるので、転記データを残す方法を VBAで考えています。 For文などで固定日付でのシート抽出は何とか出来るのですが、 さらにマスターシートの日付も動くので?入れ子?ループ?悩んでいます どなたか助けて下さい

  • VBA データ左側から3文字で分類し新規シート転記

    お知恵を貸して下さい。 エクセルに入力された問合せ内容をまとめていく上で困っています。 2列目の会員種別に入力されているデータがくせ者で、左側ら3文字で会員の種類が分かれます。 やりたい仕事は、この会員種別ごとに新規でシートを起こし、3文字mmというタイトルで(mmは上書きで書き換えます)保存までを自動化でしたいのです。 その際、元のデータから特定のセルを選んで転記するのではなく、あくまで会員種別の左から3文字で仕分けます。行は丸ごとコピーする必要があります。 新規シートでシート名までを自動で作成したいのでVBAかと思いまして。 どなたか助けて下さい、宜しくお願いします。

  • VBA 新データ行のみ元のデータシートにコピーする

    OSは、XP Excelは、2003 を使用しています。 シート1には元のデータ、シート2には追加データと元データが混じってあります。 元データシートに、追加データシートから追加データ行のみをコピペしたく、 マクロを組んでいます。 下記、 C列の売上番号を見比べて、C列のみ追記するまでは出来たのですが、 1行にデータはA列~X列まであるので、そのデータも一緒にコピペするには どの様にすれば良いのか教えて下さい。 よろしくお願いします。 ****************** Sub 追加データ追記マクロ() Dim motows As Worksheet '元データシート名を格納 Dim tsuikaws As Worksheet '追加データシート名を格納 Dim tsuikamax As Long '追加データの最終行 Dim motomax As Long '元データの最終行 Dim tsuikaNum As Range '追加売上番号 Dim motoNum As Variant '元売上番号 Dim i As Long     '書き込み行 Set motows = Worksheets(1).Name '元シート名を格納 Set tsuikaws = Worksheets(2).Name    '追加シート名を格納 tsuikamax = tsuikaws.Cells(Rows.Count, 1).End(xlUp).Row  '追加データの最終行を格納 motomax = motows.Cells(Rows.Count, 1).End(xlUp).Row '元データの最終行を格納 i = motomax + 1       '書き込み行は元データ最終行+1 For Each tsuikaNum In tsuikaws.Range("C1:C" & tsuikamax)        '追加データ売上番号格納 Set motoNum = motows.Range("C:C").Find(tsuikaNum, lookat:=xlWhole) '元データ売上番号格納 If motoNum Is Nothing Then '元データになかったら With motows .Cells(i, 3) = tsuikaNum i = i + 1 End With End If Next tsuikaNum End Sub

  • Excel に「コピー用ボタン」追加。初心者です

    Excel に「コピー用ボタン」をなんとか追加しました。 内容を作成しようとしましたが初心者で判りません。 以下のようにしたいのですが、 Sheet1の30行のA30~AZ30までのセルの内容を、Sheet2に上書きする。 Sheet2の10行~300行の中に、「Sheet1のB30と同じ内容」があります。 使用方法は、「コピー用ボタン」を押すと、Sheet1の「B30の内容と同じ」ものを Sheet2にコピーするものです。 Excel 2007 を使用しています。 以上、よろしくお願い致します。

  • Excel2007でグラフとその元データのあるシートをコピーして作った新しいシート上のグラフの参照元データがおかしい

    Vistaのexcel2007で質問です。グラフと元データのあるシートをシートごとコピーしたら、コピーして出来たシート上のグラフの元データも自動的に移動させる方法を知りたいです。 グラフと元データのあるシート(A)をコピーしてシート(B)を作成します。excel2003ならシート(B)上のグラフは同じシート(B)のデータを参照してたと思うんですが、2007だとシート(A)を参照したままです。今はいちいちデータ元を変更していてとても面倒です。 シートをコピーした時点で、2003の時の様にグラフの参照元データも自動的に移動する方法はありますか? もし無い場合、一度に参照元データを変更する方法はないでしょうか? よろしくお願いします。

  • 入力した指定のセル範囲をコマンドボタンによってコピー・貼り付けしたい

    急いでいます。 エクセル2003を使っているのですが、進まなくなってしまい困っています。 原本というシートのB39~U48にかけて簡単な表とコマンドボタン(”表追加”)を作成しました。 この表をコマンドボタンを押す度に、48行目以降に1行間隔置きでどんどんコピーして貼り付けが行われるように、VBAを組みたいのですがうまくいかず困っています。 作成した表がずれない様にうまく貼りつけしたいです。 どなたか知恵を貸してください。

  • ecxel2007 シート追加ボタンを作成したい

    excel2007で原本のシートを作成し、そのシートに"シート追加ボタン” を作成して、クリックすると作成したシートが追加されていくというVBAを使用した形で作りたいのですが、初心者の為、ボタンの作り方、及び計算式を細かく教えて下さる方。 急ぎの為、お待ちしております。

  • EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?

    VBAのマクロでシートのコピーをしたいのですが、元のシートにはVBAのコードが含まれています。コピーするのはデータだけのコピーが必要で、マクロ自体は必要ないのですが、それを削除するコードはどのように書いたらいいのでしょうか? どうしてもコピーしたファイルを開くと「マクロが含まれています」という確認メッセージが出てしまうのですが、それもなくしたいのです。 シートにフォームのボタンが配置されている場合も同様に、そのボタン自体をなくした状態でコピーを行いたいのですが・・・。プログラムで行うのは不可能なのでしょうか?

  • シート名だけを変えてコピーしたい

    Excel 2003を使用しています。 添付画像は、一時的に数式を表示するようにしています(どのセルに今どのような計算式が入っているか)。 Sheet6 の セルB2からセルF2迄、データ1の値を参照する計算式が入っていますが、 これを、3行目から6行目まで、シート名の違う、計算式をコピーしたいのですが、 どのようにすれば良いでしょうか? 縦にコピーした後、参照式のシート名と行番号を変更しています。 例えば、セルB2をセルB3にコピーしたら、セルB3の参照式は データ1!A2となっています。 これをデータ2!A1としたいのです。 実際に計算式の入っているシートは、もっと沢山の参照式が入っているので元の計算式の方法を 変更は難しいです。

専門家に質問してみよう