- ベストアンサー
Excelマクロの一部改造方法とは?
- Excelマクロの一部改造方法について教えてください。
- 先日、tom04さんから教えていただいたマクロに追加で項目を入れたいのですが、方法を教えてください。
- tom04さん以外でも、マクロの内容を理解している方なら回答していただけると助かります。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
No.3 mshr1962です。 >Sheet2のデーターが入っている、A1およびB1の指定がどの部分でされているのか教えて下さい。 ws1.Range("A1") = ws2.Cells(i, 1) ここのCells(行番号,列番号)で列番号は1がA列、2がB列と左から数えた数値に対応します。 A列をC列になら ws2.Cells(i, 1) → ws2.Cells(i, 3) とすれば変更完了です。慣れの問題ですが分かりにくいと思うなら ws1.Range("A1") = ws2.Range("A" & i) としても結果は同じです。
その他の回答 (4)
- tom04
- ベストアンサー率49% (2537/5117)
No.2です! たびたびごめんなさい。 No.3さんへの補足を読ませていただいて・・・ No.2のコードでは余計に判りにくくなっていたみたいなので、もう一度コードをアップしてみます。 結果としては同じになりますが、今回のコードの内容の方が判りやすくてセル番地等の変更も簡単だと思います。 Sub test() Dim i As Long Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") Set ws2 = Worksheets("sheet2") For i = 1 To ws2.Cells(Rows.Count, 1).End(xlUp).Row '←iは1~Sheet2A列の最終行まで ws1.Range("A1") = ws2.Range("A" & i) ws1.Range("B1") = ws2.Range("B" & i) ws1.PrintOut Next i End Sub こんなんでどうでしょうか? 何度も失礼しました。m(__)m
お礼
tom04 様 この度は、本当にお世話になりました。 思うように動作してくれました。 ありがとうございました。
- mshr1962
- ベストアンサー率39% (7417/18945)
単純にB1にA1同様にSheet2のB列の同行の値を表示でいいなら Sub test() 'この行から Dim i As Long Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") '←Sheet名は適宜変更してください Set ws2 = Worksheets("sheet2") '←こちらのSheet名も適宜変更 For i = 1 To ws2.Cells(Rows.Count, 1).End(xlUp).Row ws1.Range("A1") = ws2.Cells(i, 1) '←Sheet1のA1セルに名前を表示 ws1.Range("B1") = ws2.Cells(i, 2) '←Sheet1のB1セルに名前を表示 <<ここに追加行 ws1.PrintOut Next i End Sub 'この行まで
お礼
mshr1962 様 早々の回答ありがとうございました。 思うようにうごきました。 もう少し教えて下さい。 BASICを勉強したことがあり、マクロのBASICに似た部分は判りますが、 Sheet2のデーターが入っている、A1およびB1の指定がどの部分でされているのか教えて下さい。 たとえば、Sheet2のA1がC1に変更、B1がD1に変更した場合どの部分がどのように変化しますか。 よろしくお願い致します。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 前回投稿した者です! 今日はちょっとヨッパです! 浄土真宗ですがクリスマスを少しやっていました。 ところで本題ですが Sheet2のA・B列には同じ行数のデータがあるわけですよね? そうであれば一例です。 Sub test() Dim i As Long Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") Set ws2 = Worksheets("sheet2") For i = 1 To ws2.Cells(Rows.Count, 1).End(xlUp).Row With ws1.Range("A1") .Value = ws2.Cells(i, 1) .Offset(, 1) = ws2.Cells(i, 2) End With ws1.PrintOut Next i End Sub こんな感じではどうでしょうか? 参考になれば良いのですが・・・m(__)m
- okormazd
- ベストアンサー率50% (1224/2412)
B列のデータ数がA列と同じかそれより少ない場合。 その他の場合は、どうなのか質問に示しておかないと。 Sub test() 'この行から Dim i As Long Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") '←Sheet名は適宜変更してください Set ws2 = Worksheets("sheet2") '←こちらのSheet名も適宜変更 For i = 1 To ws2.Cells(Rows.Count, 1).End(xlUp).Row ws1.Range("A1") = ws2.Cells(i, 1) '←Sheet1のA1セルに名前を表示 ws1.Range("B1") = ws2.Cells(i, 2) '←Sheet1のB1セルに**を表示 ws1.PrintOut Next i End Sub 'この行まで
お礼
mshr1962 様 何回も回答頂きお世話になりました。 判りやすい方法で回答頂き内容もよく理解できました。ありがとうございました。