- ベストアンサー
Excel2007 マクロ 複数シートの作成
- Excel2007のマクロを使用して、複数のシートを作成する方法について教えてください。
- 作成したマクロの中で、Dataシートの情報を新しいシートに反映させたいのですが、うまくいきません。
- 修正箇所が分からないため、アドバイスをお願いします。
- みんなの回答 (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
その他の回答 (3)
- myRange
- ベストアンサー率71% (339/472)
回答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 以上です。
お礼
ご回答ありがとうございました。ご回答いただきました内容を実現したかったです。
- myRange
- ベストアンサー率71% (339/472)
>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 ではないかと。 以上です。
お礼
ご回答ありがとうございました。まずは試していかなければいけないということが分りました。
- bin-chan
- ベストアンサー率33% (1403/4213)
> 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に期待する値は何?
お礼
ご回答ありがとうございました。InFm、Intoの使い方を理解していませんでした。
お礼
ご回答ありがとうございました。またシンプルなソースを頂き非常に助かります。