• 締切済み

【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/17069)
回答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
  • ベストアンサー率66% (1719/2589)
回答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
質問者

お礼

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