• 締切済み

【VBA】シートをコピー→任意セル値をシート名に

大変お世話になります。 【Excel VBA】は全くの初心者です。 付け焼刃な質問がよろしくないことは重々承知しております。 が、どうしても『今』必要なため、皆さまのお知恵をお借りしたく 質問させていただきます。 このような動作をさせたい場合の、具体的なコードをご教示いただけませんでしょうか。 ------------------------------  組みたいマクロ ------------------------------ (1)数式が入った【原紙】Sheetの[B2~AA40]を、    同一ブック内の新規Sheetへ形式ごとコピー。 (2)(1)の新規Sheetの名前を、同シート内[B5]の入力値に変更。  < 補 足 >  ◎(1)で新規Sheetへコピーする際、数式は不要です。  ◎(1)でコピーする新規Sheetは任意の複数枚で、   名前となる[B5]値は重複しない予定です。  ◎(1)でコピーされる位置は、【原紙】Sheetの前を想定していますが、   最後尾への追加に変更になった場合は、どこを変更したらよいかも   併せてご教示いただけますと大変ありがたいです。 質問の仕方も、このような感じで伝わるのか不安なまま記載しています。 情報として不足がありましたら、そちらもご教示いただけますと有難いです。 よろしくお願いいたします。

みんなの回答

  • masnoske
  • ベストアンサー率35% (67/190)
回答No.3

[マクロの記録]を使って記録されたコードを開示すれば、的確な回答を得られると思います。

pomu_tsumu
質問者

お礼

ご教示、ありがとうございました。 わたくしの質問の仕方、表現の仕方に問題がありました。 大変申し訳ございません。 こちらを締切り、別で改めて質問させていただきます。 お手数をお掛けしました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

初心者なのに、「マクロの記録」はどうした? シートのコピーをする、操作を1例(1シート)行う。その際、マクロの記録モードにして、操作する。 操作中に、選択する選択(条件)はあまり気にせず、複雑にせず、やさしそうな普通のニーズでやる。 そしてそのコードを1行ずつ見て、意味(効果)を考えて(コード行ー結果の対応)、今回のやりたい場合は、こうしたい(こう変えたい、機能が漏れている、余分など)を、文章でメモって考える。その後 WEB照会の「検索語」を工夫して、照会し、よさそうな記事を見つけて読み、 そこで行きずまったら、ここへ質問するものだ。  この程度のことで、「マクロの記録」の方法も思いつかないようでは、初期段階の、学習方法が誤っている。 ーー >同シート内[B5]の入力値に・・ シート名のNameに対し、Range("b5").Value で済む話 ーー >(コピー貼り付けで)数式はいらない。? 「VBA コピー 数式は省く」で照会ーー>行き着いた記事 ー>形式を選択して貼り付ける(PasteSpecialメソッド https://www.moug.net/tech/exvba/0050104.html 多にもたくさん記事在り。 === さらに学習を進めると、マクロの記録が取れないとか、カバーできない、分野になるが、ずっとマクロの記録は、VBA学習を助けてくれる。

pomu_tsumu
質問者

お礼

ご教示、ありがとうございました。 わたくしの理解力、取り組み方に問題がありました。 大変申し訳ございません。 こちらを締切り、別で改めて質問させていただきます。 ご迷惑をお掛けしました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率65% (1624/2466)
回答No.1

> ◎(1)で新規Sheetへコピーする際、数式は不要です。 数式もコピーしないとそこに何か計算結果あっても空白になりますし、コピーしたシートでの計算ができませんがいいのですか? >  ◎(1)でコピーする新規Sheetは任意の複数枚で、 >   名前となる[B5]値は重複しない予定です。 【原紙】Sheetが複数枚あるという事ですか? その【原紙】Sheetはどのように判別するのでしょう? とりあえず 【原紙】Sheetという名前のシートを直前にコピーして名前をB5のデータにしてB2~AA40を同じところにコピーというだけのコードです。 Sub Test() Worksheets.Add Before:=Sheets("【原紙】Sheet") ActiveSheet.Name = Sheets("【原紙】Sheet").Range("B5").Value Sheets("【原紙】Sheet").Range("B2:AA40").Copy Sheets(Sheets("【原紙】Sheet").Range("B5").Value).Range("B2:AA40") End Sub 最後尾でしたら Worksheets.Add After:=Sheets(Worksheets.Count)

pomu_tsumu
質問者

お礼

ご教示、ありがとうございました。 わたくしの質問の仕方、表現の仕方に問題がありました。 大変申し訳ございません。 こちらを締切り、別で改めて質問させていただきます。 お手数をお掛けしました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 【VBA】シートのコピー ~ 値に直す

    大変お世話になります。 VBAのコードについてご教示いただけませんでしょうか。 ■やりたいこと -------------------------------------------------------------------------------- (1) 【原紙】Sheetを、同ブック内の新規シートへコピー (2) 新規シートのシート名を、[セル:B5]の値に変更 (3) 新規シートにコピーされてきた数式を値に変更 ■作成してみたコード -------------------------------------------------------------------------------- Sub SheetCopy1() Worksheets("【原紙】Sheet").Copy Before:=Worksheets("【原紙】Sheet") ActiveSheet.Name = Range("B5").Value Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False End Sub -------------------------------------------------------------------------------- 本日初めてVBAに触れた者が、見よう見まねで『■やりたいこと』を並べたコードのため、やはりエラーになってしまいます。 上記は、どこをどう直せばよろしいでしょうか。 もしくは、そもそも間違っておりますでしょうか。 ご教示いただきたく、何卒よろしくお願いいたします。 ◎もし可能でしたら、併せてご教示ください◎ ---------------------------------------------------------------------------- (1)の動作をさせるために、【原紙】Sheetの任意の場所に”ボタン”を設置するのですが、新規シートにもコピーされるため、そのコピー側のボタンを削除できたら…とも考えていますが、そういう動作も可能でしょうか。

  • 【VBA】シート名をセルに入力すると、そのシートのコピーを実行させるには?

    【条件】 1.仮に「合計」というシートに、追加されるシートのあるデータをコピーしたい。 2.別シートに一定のフォームの集計データが入っているので、このシート名を変更して「A」という名前に変更する。そして、「合計」の入っているブックに移動する。 3.「合計」のA1のセルに「A」という入力をしマクロを実行すれば、「A」のシートの一定のRangeから、合計の任意の場所にコピーをするマクロをつくりたい。 4.このフォームは年間同じフォームで20回発生するがそのたびに、同じような作業が必要となります。 (シートにコピーする作業は、やめて、ブックの別ファイルのあるシートから、ある一定のRangeをコピー元として、「合計」にコピーするでも問題ないです)。 If ~ Elseif ~、myRange = A1で作っても、そのmyRange = A, Elseif = B、と延々につくらなければならない(=たぶんこれは原始的なのだと自認しています)のがはがゆく、 シート名が”文字列(または数字)”の場合、その”文字列(または数字)”をもつ、ブックまたはシートから、コピーを実行というコードをつくりたいのです。 よろしくお願いいたします。

  • VBA 他シートを参照しているセルのコピー

    お世話になります。 以下のシートがあります。 [sheet a]    A     B        C      D     E 1 2004 2005 2006 2007 2008 2 =b!A2 =b!C2 =b!E2 =b!G2 =b!I2 3 10 15 16 4 11 4 12 30 20 9 2 5 =SUM(A3:A4) =SUM(B3:B4) =SUM(C3:C4) =SUM(D3:D4) =SUM(E3:E4) [sheet b] A B C D E  F G H I J 2004 2005 2006 2007 2008 1 あ1 い1 う1 え1 お1 か1 き1 く1 け1 こ1 2 あ2 い2 う2 え2 お2 か2 き2 く2 け2 こ2 ・・・・・・・・・ [sheet a]F列以降に入れるデータは、VBA(マクロ)を使って、別のブックから取り出しています。 (例) F1…=E1+1(E1の数式をコピー) F3,F4…任意の値(別のブックからコピー) F5…=SUM(F3:F4)(E5の数式をコピー) 1行目,5行目の場合は左のセルをコピーして数式を貼り付けると、列が自動的に列が変わりますが、2行目の場合は元のシートを1行おきに参照しているので、単純にコピーしただけでは正しい数式が入りません。 2行目の参照をVBAで作るには、どのようにしたらいいでしょうか。 よろしくお願いします。

  • Excel 違うBookのシートをコピーする

    Excelでわからないことがあり質問させていただきました。 原紙のBookに 資料のBookのシートをコピーさせたいのですが 資料Bookには シートが sheet1~sheet50まであり 原紙のBookにマクロのボタンやフォームを作成し 毎回資料のBookの違うシート名を選択しコピーをさせることは可能なのでしょうか? たとえば 原紙のシートに入力フォームを作り sheet名を入力 → 「コピー」のボタンを押すとコピーができる。 といった感じに・・・ フォームでなくてもリストなんかでもいいのですが・・・

  • EXCELのシート名を同じシート内のセルにコピー

    EXCELのワークシートの名前の変更(例えば「19877」)を入力すると、 同じシート内のあるセル(例えば「B4」)に同じ名前(「19877」)がコピーされる。 入力作業が2回かかるのを1回ですませたい。 あるいは、逆の場合、 シート内のあるセルB4に19877を入力すると、シートの名前が19877になる。 よい方法があれば教えてください。

  • エクセルのシート名をセルにコピーさせたい

    エクセルのシートをそのままコピーしてページ数を増やして新たなシートを作っています。たとえば「Aさん」のシートをコピーして「Bさん」のシートを新しく作るんですが、現在はその作業ごとにシート名の変更とシート内のセルにある名前を変更しています。それは1箇所だけですませてますが、シートの名前を変更するだけで、同時にセル内のデータも一緒に変更できる方法はないのでしょうか?よろしくお願いします。

  • エクセルでシートをコピーしているのですが・・・

    「4日」という名前のシートをコピーして作業しているのですが たまに間違えて「4日(1)」のシートをコピーしてしまうと 『移動またはコピーしようとしている数式またはシートには、移動またはコピー先のワークシートに既にある名前'afda'が含まれています。この名前を使用しますか?』 というエラーメッセージが出ます。 ここで「はい」を選ぶと 延々 上記メッセージが繰り返し表示され、 「いいえ」を選ぶと 『名前の重複』というウインドが出て 『同じ名前がリンク先のシートに定義されています。 変更前:eytw 変更後: 』 と表示されます。 変更後の部分に 何か言葉を入れると 『同じ名前が既に定義されています』 と出ます。 キャンセルを押すと 『移動またはコピーしようとしている数式またはシートには・・・・・・ のメッセージに戻ります。 いつも どうにもならなくなり エクセルを強制終了させてるので 保存していない文書のときは かなり泣けてきます(T_T) 原因や解決方法がありましたら アドバイスよろしくお願いします ちなみに シート名「見本」でコピーしたときも同じエラーになりました。

  • VBAでエラーメッセージが出ないようにしたい

    book1にbook2のセルをコピーして貼り付け、book2を閉じようとしたところ、シートにリンクが張られているのか以下のようなメッセージボックスが出てきます ----ここから----------------- 移動またはコピーしようとしている数式またはシートには、移動またはコピー先のワークシートに既にある名前’xxx’が含まれています。この名前を使用しますか? コピーまたは移動先のシートに定義されている名前を使用する場合は「はい」をクリックします。 数式またはワークシートで参照する範囲の名前を変更する場合は、「いいえ」をクリックし、「名前の重複」ダイアログボックスに新しい名前を入力します。 ---------ここまで------------------ 取り敢えず「はい」をクリックして閉じているのですが、複数回このメッセージが繰り返し出てきて面倒なので、VBAでこのメッセージを出さないようにしたいのですが、どのようにすればよいのでしょうか?

  • シートのコピー

    ブックAとブックBに同じ名前のシートがあります。 普段は、ブックAのシートを利用し、上書き保存しています。 ブックBを開く度に、ブックAのシートがブックBのシートに 自動的に上書きコピーされる方法はありませんか? Excel2013です。

  • エクセルでシートのコピー時の異常

    エクセルでシートの別のエクセルファイルにコピーをする時に、時々、以下の異常がでます。 1.移動またはコピーする数式またはシートには、移動またはコピー先のワークシートに既にある名前‘aaa’が含まれています。この名前を使用しますか? ・コピーまたは異動先のシートに定義されている名前を使用する場合は、[はい]をクリックします。 ・数式またはワークシートで参照する範囲の名前を変更する場合は、[いいえ]をクリックし、[名前の重複] ダイアログボックスに新しい名前を入力します。 [はい]を押すと、 ‘aaa’の部分が変化するだけで、全く同じメッセージがでる。 [いいえ]をおすと、 名前の重複ダイアログが出て、「同じ名前がリンク先のシートに定義されています。」(というかそんな名前のシートはないのですが)とりあえず、変更後に別の名前を入力してみますが、1.の状態に戻るだけで解決しません。 最も、やっかいなのが、この状態になると、ここから抜け出せず、上書き保存すら受け付けてくれないので、最悪、保存前の状態に戻らざるをえないのが困っています。 どなたか、回答よろしくおねがいします。

専門家に質問してみよう