Top

hiroyuki.tank.support.site

簡単!マクロ講座

第38回〜あてな-RangeとCells〜


 ここからがポイントです。
 マクロの自動記録で作ったコードの3行目を見てください。

Range("B2:F11").Select

 データのB2からF11を選択するという意味です。この範囲をコピーして宛名の様式に貼り付けています。
 これではいつも2行目の人から10人分を印刷してしまいます。
 ここのセルをno+1から10人分にしてやればよいのです。(noというのはユーザーが指定した何番目の人かという数字でした)
 なぜno+1かというと,シート「データ」の住所データは2行目から始まっているので1番の人は2行目に10番の人は11行目にいるので1をたすということになります。

 ただ単に,Range("B,no+1:F,no+10").Selectとしたのではもちろんダメです。
 これはちょっと難しい!ここは難関ですからゆっくりじっくりやってみてください。

 変数をセルの特定に使うときは「Range」だけではうまくいきせんでした。第15回で出てきた「Cells」を使います。
 「Cells」の Cells(3,1) の括弧の中の数字はセルの位置を表しています。
 はじめの方が行で,次が列となります。Cells(3,1) は3行目の1列目となりますので,セルA3のことです。

 no+1行目で2列目(B列のことです)のセルからno+10行目,6列目(F列のことです)を選択するコードは次のようになります。
Range(Cells(no+1,2),Cells(no+10,6)).Select

 ここでは,Range()は「範囲」と考えてください。
 ちょっと見た目には「なんで??」と思われるかもしれませんが,「B,no+1」=Cells(no+1,2)で,「:」=「,」で,「F,no+10」=Cells(no+10,6) と分けて考えるとおわかりいただけるかと思います。んん?わかりにくかも!?

 わかりにくいのでnoに1を入れてみましょう
Range(Cells(1+1,2),Cells(1+10,6)).Select
 となりました。計算すると
Range(Cells(2,2),Cells(11,6)).Select
 ですね。もっと訳すと
Range("B2:F11").Select
 最初にもどりました。
 「"」とか「:」の記号はこんなものを使うという程度に考えてください。
 使っているうちになれてくると思います。(あまり解決になってないけど・・・)習うより慣れろです。

 それでは3行目の「Range("B2:F11").Select」を「Range(Cells(no+1,2),Cells(no+10,6)).Select」と変更します。
 メインのC7の数字をいろいろ変えて試してみてください。
 ちゃんと動きましたか。

 おかしなことになった人,メインのC7に数字を入れていますか?ここに数字を入れていない場合は変数「no」は「0」とみてしまいますので,データの1行目から11行目までをコピーしてしまったのです。2とか3をいれて実行してみてください。


| hiroyuki.tank.support.site.Top | このページのTop | マクロ講座目次 | 前回 | 次回 |