0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Q4.繰り返し処理をして、複数のセルに値を入力するには?

Last updated at Posted at 2020-01-09

今回は、繰り返し処理を用いたマクロを作ってみましょう。

For文という構文を使います。
ExcelVBAに限らずほとんどのプログラミング言語で使われるので、
知っている方も多いかと思います。

今回の問題の内容は、
A1セル~A10セルまでの10個のセルに、1~10までの値を順番に入れるマクロを
作るには?とします。結果のイメージはこんな感じ↓ですね。

Q4-2.png

たったの3行のコードでこれを実現できてしまいます。
今回は10個のセルですが、これは数が100個になろうと1000個になろうと、
同じく3行のコードで実現することができます。

では、マクロを覗いて見ましょう。こちらです。

Sub Q4_Answer()
    For i = 1 To 10
        Range("A" & i).Value = i
    Next i
End Sub

このマクロを実行すると、先ほどの画像のような結果が得られます。

さて、このマクロのポイントなんですが、For文よりも以下の表記がポイントだったりします。
Range("A"& i).value

このように表記することによって、iがFor文の中で変化するにつれて、
入力するセルがひとつずつ下へずれていくというわけです。

ちなみにちょっと変わった正解例もご紹介しておきます。

Sub Q4_Answer_ex()
    For i = 1 To 10
        Range("A1").Offset(i - 1, 0).Value = i
    Next i
End Sub

Offsetプロパティを利用して、入力するセルをずらすテクニックです。
Range().Offset(ずらす行、ずらす列)とします。(0なら省略も可)
例えば、Range("A1").Offset(1,)とすると、A1セルから1行下のセル、
つまり、A2セルを示します。
また、Range("A1").Offset(,1)とすると、列が1つ右にずれます。
つまり、B1セルを示すことになります。

これを、先ほどのようにFor文の中で利用することによって、
1つずつ下へ入力するセルをずらしています。

プログラミングの世界は正解はひとつとは限らず、いろいろなやり方が
考えらえます。実現したいことによって、いいやり方悪いやり方がありますが、
まずは、実現したいことを実現する為に、いろいろなやり方があるというのを
知っておくと、柔軟な発想ができるかも知れませんね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?