• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel2007 マクロ 複数シートの作成)

Excel2007 マクロ 複数シートの作成

このQ&Aのポイント
  • Excel2007のマクロを使用して、複数のシートを作成する方法について教えてください。
  • 作成したマクロの中で、Dataシートの情報を新しいシートに反映させたいのですが、うまくいきません。
  • 修正箇所が分からないため、アドバイスをお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

>下記2行が違うと思うのですが、修正箇所が分かりません。 >shTo.Range("B1" & Into).Value = shFm.Range("B2" & lnFm).Value >shTo.Range("B2" & Into).Value = shFm.Range("C2" & lnFm).Value shTo.Range("B1").Value = shFm.Range("B" & lnFm).Value shTo.Range("B2").Value = shFm.Range("C" & lnFm).Value ということでしょうね。あまり、凝った書き方をしないで、カウンター変数は、一文字(i,j,k,m,n,x,y,a,b)などが良いと思います。 私の書き方です。少し、参考にしてみてください。 shTmp.Cells.Copy .Cells(1, 1) こういう方法にするのは、シートオブジェクトそのものをコピーすると、別の見えないものまでコピーする可能性がありますので、私などは、使いません。 また、Range の中の引数は、基本的には文字列なのですが、引数の中で、データ型が変換されることを嫌って、私は、Cells にさせます。 '// Sub TestMacro1()  Dim shFm As Worksheet  Dim shTmp As Worksheet  Dim i As Long    Set shFm = Worksheets("Data")  Set shTmp = Worksheets("Temp")  'For i = shFm.Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 '順序をあわせる  For i = 2 To shFm.Cells(Rows.Count, 1).End(xlUp).Row   If shFm.Cells(i, 2).Value <> "" Then    With Worksheets.Add(After:=Worksheets(2))     shTmp.Cells.Copy .Cells(1, 1)     .Cells(1, 2).Value = shFm.Cells(i, 2).Value     .Cells(2, 2).Value = shFm.Cells(i, 3).Value     .Name = shFm.Cells(i, 2).Value    End With   End If  Next  shFm.Select  Set shFm = Nothing  Set shTmp = Nothing End Sub

hyogara777
質問者

お礼

ご回答ありがとうございました。またシンプルなソースを頂き非常に助かります。

その他の回答 (3)

  • myRange
  • ベストアンサー率71% (339/472)
回答No.3

回答2、myRangeです。 もしかして、 、 >shTo.Range("B1" & Into).Value = shFm.Range("B2" & lnFm).Value >shTo.Range("▼B▼2" & Into).Value = shFm.Range("C2" & lnFm).Value この2行目の左辺に"B2" & Into とIntoが使われているということは B列ではなくて、右辺と同じくC列としたい? タイプミス? であれば、 shTo.Range("B" & Into).Value = shFm.Range("B" & lnFm).Value shTo.Range("C" & Into).Value = shFm.Range("C" & lnFm).Value 以上です。

hyogara777
質問者

お礼

ご回答ありがとうございました。ご回答いただきました内容を実現したかったです。

  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

>shTo.Range("B1" & Into).Value = shFm.Range("B2" & lnFm).Value >shTo.Range("B2" & Into).Value = shFm.Range("C2" & lnFm).Value たぶん、 shTo.Range("B1").Value = shFm.Range("B" & lnFm).Value shTo.Range("B2").Value = shFm.Range("C" & lnFm).Value ではないかと。 以上です。  

hyogara777
質問者

お礼

ご回答ありがとうございました。まずは試していかなければいけないということが分りました。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> shTo.Range("B1" & Into).Value = shFm.Range("B2" & lnFm).Value > shTo.Range("B2" & Into).Value = shFm.Range("C2" & lnFm).Value "B1" & Intoに期待する値は何? "B11"? 同様に "B2" & lnFmに期待する値は何? "B2" & Intoに期待する値は何? "C2" & lnFmに期待する値は何?

hyogara777
質問者

お礼

ご回答ありがとうございました。InFm、Intoの使い方を理解していませんでした。

関連するQ&A