【これで解決!】セルを1行ずつ判定する方法を解説!【Excel VBA】

こんにちは!『ルウちゃんのExcel Labo』管理人の@rouxchanblogです!

今回はこのような悩みについて解説します。

ルウちゃん

セルを1行ずつ順番に判定する方法ってどうやるの?
値が違う場合は別の処理をさせる方法も教えて!

この記事でわかるようになること
  1. セルを1行ずつ取得して判定する方法
  2. Do~Loopステートメントの使い方
目次

サンプルコードの紹介

セルを1行ずつ判定して、値が違う場合は○を入力させてみました!

まずはサンプルコードと実行画面を見て、イメージしてください!

サンプルコード
Dim 現在セル値
Dim 前回セル値
Dim i

i = 1

Cells(1, 1).Select

Do
前回セル値 = 現在セル値

If 前回セル値 = Empty Then
前回セル値 = Selection.Value
End If

現在セル値 = Selection.Offset(i, 0).Value

If 現在セル値 = Empty And 前回セル値 = Cells(1, 1).Value Then
Exit Do
End If

If 前回セル値 <> 現在セル値 Then
Cells(i, 2).Value = "○"
End If

i = i + 1

Loop
MsgBox "処理が終了しました。"
実行前
実行後

このように値が変わる時に○を入力することができました!

行を1行ずつ取得する

記述方法
現在セル値 = Selection.Offset(i, 0).Value

まずは1行ずつセルの値を取得していき、変数に格納します。

selectionプロパティ」は選択しているセルをオブジェクトとすることができます。

そして、「offsetプロパティ」で1行ずつずらして、値を取得していきます。

ルウちゃん

選択されたセルから1行ずつずらして値を取得しているんだね!

ここで選択されているセルというのは「Cells(1, 1).Select」で選択された、A1セルということを忘れないでください!

このA1セルからずらす距離は「offsetプロパティ」の中の変数「i」を増やすことで1行ずつずらすことができているのです。

ここの動きはしっかりイメージしてくださいね!

Do~Loopステートメントについて

次に繰り返し処理について解説します。

今回は「For〜Next」ではなく、「Do~Loop」で繰り返し処理を実行しました。

For〜Next」では指定した回数分処理させることができますが、「Do〜Loop」を使うことで条件を満たすまで処理を続けることができます。

記述方法
Do [While もしくは Until 条件式]

〜〜 実行したい処理 〜〜

Loop

「While」は条件を満たす間処理を実行し続けます。

「Until」は条件を満たすまで処理を実行し続けます。

この2つは基本的にどちらか使いやすい方だけに統一して使うほうがいいです。

ルウちゃん

ん?サンプルコードには書いてなかったよ…

今回のサンプルコードではこれらは使っていません!

Exit Do」を使ってループを抜けています。

記述方法
Do

〜 処理① 〜

if 条件式 Then
Exit Do 
End If

〜 処理② 〜

Loop

このように処理①の結果に応じて処理②を実行させるか決めたい場合は、「Exit Do」を使うことをおすすめします。

記述次第では他にも同様の処理を実行できますのでご自身にあったやり方を見つけてください!

まとめ

今回はセルを1行ずつ順番に判定する方法を解説しました。

「selectionプロパティ」は選択したセルをオブジェクトとして扱うことができるので様々な場面で使うことができます。

また、「Do〜Loop」の繰り返し処理は「For〜Next」とは違った繰り返し処理を可能とするので必ず使えるようにしておきましょう!

実際の実務で使う場合は今回使ったサンプルコードを参考にしてコードを作ってみてください!

この記事で少しでも皆さんのお役に立てれば幸いです!

忘れないうちにお気に入り登録もお願いします!

ありがとうございました!

/// お得な情報 ///

すぐに使えて便利なテクニックが650個も手に入る!

気になる人は今すぐクリック!!

 

目次