[[20170224140028]] 『シート名を作成しながら中身のフォーマットも同時』(ぴょん田) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『シート名を作成しながら中身のフォーマットも同時作成したい。』(ぴょん田)

初めまして。
下記のようなマクロコードがあります。
シート名に、したい名前をセルに入力するとそのシート名を
自動作成してくれるのですがこれに、決まったフォーマットの
シート内容を持たせた状態で作成することは可能ですか?

また、A列に関しては、シート名によって入る内容がことなるのですが
これも、シート作成を同時に作成したいと考えているのですが
かのうですか???

シート名を、作成するのと中身のフォーマットは別々の方が良いですか?

Sub シート作成()

    Application.DisplayAlerts = False
    Dim i As Long, sh As Worksheet
    For Each sh In Worksheets
        If sh.Name <> "シート名" Then
            sh.Delete
        End If
    Next sh

    With Sheets("シート名")
        For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
            Worksheets.Add
            ActiveSheet.Name = .Cells(i, 1)
        Next i
    End With
End Sub

< 使用 Excel:Excel2010、使用 OS:Windows7 >


可能かどうかだけならば、大抵の事は可能ですよ。そこで質問せず、実際に試してみてから聞くべきでしょうね。現状だと、何も具体的な説明がありませんし。

固定フォーマットのシートを量産する場合のよくある手は、フォーマットは手作業で作成済みで、データは入っていないシートを用意しておいて、シートコピーしてから値をセットしていく、という方法です。複数のフォーマットならば、複数のひな形シートを用意しておくだけです。同様に、ブック丸ごとをひな形として、ブック(ファイル)のコピーを行ってからデータをセットしていく、という場合もあります。
(???) 2017/02/24(金) 14:23


 >決まったフォーマットの  シート内容を持たせた状態で作成することは可能ですか?

 もちろん可能ですね。
 テンプレートシートを作っておき、現在、 Worksheets.Add としているところを
 そのシート.Copy After:=・・・ といったようにコピーすればOKですね。
 このテンプレートシートは非表示にしておいて、処理の最初で表示してシートコピーの元ネタにし
 処理の最後に非表示に戻す ということも考えられますね。

 >また、A列に関しては、シート名によって入る内容がことなるのですが 
 >これも、シート作成を同時に作成したいと考えているのですが 
 >かのうですか??? 

 もちろん、可能ですね。
 具体的には、出来上がるシートのA列のどこに、どんなものをいれたいかという要件によって
 手法が変わってくると思いますが。

 >シート名を、作成するのと中身のフォーマットは別々の方が良いですか? 

 文章の意味がよくわかりませんが、もし、テンプレートからのシート作成と作成したA列に何か書き入れる
 ということを言っておられるなら、これらは」分ける必要はなく、同時に処理したらいいと思います。

 ★ところで、現在は、シート名シート以外をまず削除し、あらためてシートを追加しているわけですね。
  この作り上げたものを何に使うのかが不明ですが、必要シートだけを持った新規ブックとして作り上げることもできます。

(β) 2017/02/24(金) 14:34


>決まったフォーマットの
>シート内容を持たせた状態で作成することは可能ですか?
雛型のシートをコピーすればできます。

所詮、手動の自動化しているだけだから、
「難しい呪文がいっぱいあるのでは?」と、
あまり構えなくてもいいと思いますよ。

まずはその操作を、マクロの記録して
どんなコードになるか探って見てはいかがでしょうか?

>また、A列に関しては、シート名によって入る内容がことなるのですが
>これも、シート作成を同時に作成したいと考えているのですが
>かのうですか???
可能です。が、、、、

「もし、○○が△△の時は××する。」

というような条件により判断して作業を変えるのは、
エクセル君はしてなくて操作者が条件判断しているので、
マクロの記録には記録されません。
そういう時は、

If ○○=△△ Then ×× 

と、英語のような、数式のような文章を書くことになります。

参考URL>>
http://www.eurus.dti.ne.jp/~Yoneyama/Excel/vba/vba_if_select.html#if_then

でも、まずは、(あなたにとって)意味不明なマクロコードは捨て去って、

1)日本語で作業の流れを書く
2)手動で操作し、マクロの記録をしてみる
3)やりたい操作がVBAという言語ではどう表現されるかをさぐり、
日本語の作業の流れを翻訳して行く作業から始めることをお勧めします。

******************<作業指示書>**************

0)作業始め
1)シート名の入力(任意に入力? or 選択して入力?)(それから、どこに入力?)
2)シート名により違う項目を取得(どこに書いてある?)
3)ひな形シートコピー(どこに挿入?)
4)新しくコピーしたシートの名前を入力した値に変更
5)新しくコピーしたシートのA列に決まった項目を入力
6)作業終わり

*************************************************

たぶん、こういう指示書を書いてくれたら、
エクセル君の代わりに僕でも作業が出来ると思います。
つまり、文書で他人に作業内容を伝つたるよう(今回の場合はエクセル君)に書いてあるのが、
プログラムのコードになります。

名前でシートの内容が変わるなら、
別のブックに雛型集を用意しておいて、
名前でシートを選択してコピーしてくれば、
いいんじゃないですかね?

まずは、大抵のことはできるので、どうやるかを決めてくださいね^^
(まっつわん) 2017/02/24(金) 14:55


あぁ、そうか。。。
ひとの書き込みを見て思った。

要はブックの初期化をしたいのかな?

雛型集をテンプレートのファイル形式で用意しておけば、
マクロ要らないかもですね。。。
不要なシートを選んで削除するか、
必要なシートをさらに新しいブックにコピーするか、
手順の少ない方でやればいいかもですね^^

(まっつわん) 2017/02/24(金) 15:05


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.