| 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 | マクロ講座目次 | 前回 | 次回 |