[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『同一ブックに名簿を作成し、そのブックのシート見出しに名前を反映させるにはどうすればいいですか。』(よしひろ)
同一ブックにまず名簿を作成します。そのブックのシート見出しに名簿の名前をすべて反映させるにはどうすればいいのですか。まったくの初心者です。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
とりあえずのサンプルです。 選択したセル範囲で、シートを追加します。
Sub Sample() Dim r As Range Dim ws As Worksheet
For Each r In Selection If r.Value <> "" Then On Error Resume Next Set ws = Worksheets(r.Value) On Error GoTo 0 If ws Is Nothing Then Worksheets.Add after:=Worksheets(Worksheets.Count) Worksheets(Worksheets.Count).Name = r.Value End If End If Next End Sub
(Mook) 2014/12/06(土) 11:38
まずはこのあたりを参考に。 http://officetanaka.net/excel/vba/beginner/10.htm (Mook) 2014/12/06(土) 12:08
マクロを動かすところまでは出来たようですね。
やりたい内容がよくわからないので、 ・Sheet1 のレイアウト ・シートの状態(マクロ実行前) ・シートの状態(マクロ実行後) を具体的なサンプルで説明してもらえますか。 (Mook) 2014/12/06(土) 15:06
sheet1はA列に順に「木村佳弘」「木村栄子」「木村晴香」・・・という名簿を仮に作りました。 マクロ前のシートの状態は、シート見出しが1/1(1)/1(2)・・・1(23)となっていて、中身は成績の評価表がすべてにはいっています。 マクロを実行したら1/1(1)/1(2)・・・1(23)/木村佳弘/木村栄子/木村晴香となってしまいました。
やりたいことは、SHEET1に作成した名簿の順に、シート見出しの「1」に「木村佳弘」と、「1(1)」に「木村栄子」と反映されるようにしたいのですが・・・・。
(よしひろ) 2014/12/06(土) 15:21
名前とシートの個数が一致していないときにはどうするのでしょうか。 データシートが同じ形式であれば、2番目のシートを「書式」などとして、これを コピーしてシート作成するほうが良い気がします。
上記でよければ、先頭2シートを残してすべて削除し、2番目のシートを「書式」として
Worksheets.Add after:=Worksheets(Worksheets.Count) を Worksheets("書式").Copy after:=Worksheets(Worksheets.Count) に変更すれば出来るかと思います。 (Mook) 2014/12/06(土) 15:49
「書式」シートがないのではないですか。 (Mook) 2014/12/06(土) 19:21
シートの名前です。 2番目のシートの名前を「書式」に変えてください。 (Mook) 2014/12/06(土) 20:58
Worksheets(Worksheets.Count).Name = r.Value の後ろに Worksheets(Worksheets.Count).Range("AH2").Value = r.Offset(0,-1).Value を追加で。 (Mook) 2014/12/07(日) 18:12
もし今後もマクロで EXCEL を使っていくつもりがあるなら、ぜひコードのトレースと デバッグの仕方を習得してください。
ステップ実行しながら、 変数に今、何が入っているか、 期待通りにならない場合、処理のどこでおかしなことが起きているか、 このあたりをある程度、調べることができないと、なかなか伸展しないように思います。
『マクロを「書いてみた」「動かした」「ダメでした」。』
http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_200.html
『デバッグトレースの開始方法』
http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_030.html
それからA、B列の数行のサンプルのような、シートの構成の具体例を出して、説明 した方が良いと思います。 A列に 数値、隣のB列に名前があり、B列を選択して実行の想定ですが、あっているでしょうか。
あと、マクロは標準モジュールにある想定です。 (Mook) 2014/12/07(日) 20:42
先頭2シートを残してすべて削除し、2番目のシートを「書式」として
Worksheets.Add after:=Worksheets(Worksheets.Count) を Worksheets("書式").Copy after:=Worksheets(Worksheets.Count)
としてマクロを実行したらシート見出しは、名簿通りになりました。昨日はそこで成功して終わったのですが、今日、番号をAH2セルに連番で入れなくてはいけないことに気づき質問しました。そこで
Worksheets(Worksheets.Count).Range("AH2").Value = r.Offset(0,-1).Valueを追加して、B列を選択して実行したら全てのシートに「1」と記入されて困っている所です。デバックでステップインもしましたが、変化がわかりません。
(よしひろ) 2014/12/07(日) 22:26
わからないですね。 こちらでは、名前の左横の番号が AH2 に転記されます。
A列は数字が直接記入されているでしょうか。 数式の計算方法の設定は自動になっているでしょうか。
>デバックでステップインもしましたが、変化がわかりません。
r.Offset(0, -1).Value と r.Value をそれぞれ選択して「ウォッチ」ウィンドウに ドロップしておいてからステップ実行してください。
ループの各回の値が確認できます。
(Mook) 2014/12/07(日) 23:50
の後ろに Worksheets(Worksheets.Count).Range("AH2").Value = r.Offset(0,-1).Value を追加で。をして、B列を選択して、マクロを実行したら、連番ができました。何が原因だったのでしょうか。数字をオートフィルで入れていたのが悪かったのでしょうか。とにかく、ありがとうございました。 (よしひろ) 2014/12/08(月) 20:23
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.