Top |
|
簡単!マクロ講座
第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 | マクロ講座目次 | 前回 | 次回 |