- ベストアンサー
For Next 式の結果をセル表示
Dim i, p For i = 1 To 9 For p = 1 To 9 Cells(i, i * p).Value = i * p Next p Next i End Sub ↑の式ではA、1~I、9に 結果が出るのですが その結果を縦にひとつづつ表示したいのです (たとえばA1~A81へ) その場合はもうひとつ変数を宣言して 変数に表示したいセルの情報を記入するのですか? もしくは変数を宣言しなくても可能ですか? できれば双方のサンプルを教えていただければ 幸いです
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
変数を宣言しない場合 Sub test() Dim i, p For i = 1 To 9 For p = 1 To 9 Cells(i * 10 - (9 + i - p), 1).Value = i * p Next p Next i End Sub =============== i * 10 - (9 + i - p) で、行に入る数字を作ってます。 =============== 次に変数に入れるやつですが、 適当な変数を宣言して、ループの中でカウントアップし、 それを、A列の中の行とすればいけます。 Sub test() Dim i, p, y y = 0 For i = 1 To 9 For p = 1 To 9 y = y + 1 Cells(y, 1).Value = i * p Next p Next i End Sub
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
何をしたいのか良く伝わらないが (1)Cells(行、列)で行、列を表すには、別変数にした方が判りやすいと思う。 #1回答の後半。 (2)たまたま本題では Sub test01() Dim i, p For i = 1 To 9 For p = 1 To 9 Cells((i - 1) * 9 + p, 1).Value = i * p Next p Next i End Sub で良いのかな。 しかしいつも旨く行くとは限らないから、r(Rowのr) とでも取りあえずおいて、rはp,iでどう表されるか 考える。
お礼
ご解答ありがとうございます ROWも 今後つかっていこうとおもいます
- koma1000nin
- ベストアンサー率30% (342/1133)
#2の補足に対する回答 1)変数宣言して指定する場合 ・セル参照で得られる以外の情報が必要で あるとき ・セル参照が大量で、参照式の記述全体が エクセルのファイルサイズに影響するとき 2)直接数式で指定する場合 ・局所的なセル参照で済ませられるとき (例えば単純に合計値を求めるとき) 何かの宿題ですか? 問題は九九の表を作らせ、並びを変更させ…と基本的なアルゴリズムを習得させたうえ、最後に「得失を述べよ」という理解度確認の課題らしいですね。
お礼
お礼が遅くなって大変もうしわけありません 変数・数式それぞれの使い分けについて 詳細にお答えくださってありがとうございます。 非常に参考になりました。 宿題というわけではないのですが^^
- koma1000nin
- ベストアンサー率30% (342/1133)
新たに変数定義はせず、 Cells(9*(i-1)+p, 1).Value = i*p としてはどうなのでしょう? #1さんの式と同じことですが、シンプルだし、意味がよく把握できますでしょ?
お礼
お礼が遅くなって申し訳ありません。 色々参考にさせていただいて おぼろげながらCells とRangeの使い分け があることが分かりました。 本当にありがとうございました
補足
御回答ありがとうございます 参考になります^^ 皆様はこのようなセルの場所を指定するときに、 A 変数宣言して指定する場合 と B 直接数式で指定する場合を どのように使い分けていらっしゃいますか? A・・・マクロ自体が見やすくなる B・・・細かく位置を指定できる 等など・・・
お礼
早速の御回答感謝です 両方のバージョンを試してみたいと思います。 変数もループも敷居が高くて挑戦できないでいましたが がんばりたいと思います