Excelのこととか色々

マクロをどんな Excel ファイルにも実行できるように設定して、3秒かかる操作も1秒で完了。あといろいろ書いてみます・・・

【VBAスタンダードに挑戦!】For Each...Next(セル範囲の操作)

【VBAスタンダードに挑戦!】

f:id:tuna-kichi:20200614200940p:plain

 

本日の5分勉強の内容

 

 

********************************************************

For Each...Nextステートメント

・グループのメンバーをひとつずつ、順番に調べる(操作する)

・グループは以下の3つが指定できる

 コレクション(同じ種類のもの(ブック、シート etc.))
 複数セル
 配列

・記述方法
 For Each 変数 In グループ名
  変数を使った処理
 Next 変数

 

セル範囲の操作

・セル範囲 = 指定した複数のセル、または選択した複数のセルのこと

・連続した範囲だけでなく、任意で指定または選択したセルも操作できる

・Rangeオブジェクトが集まった と考える

・変数には Range型 を指定する

 

                   

 

Sub セル範囲操作()

 Dim Rng As Range '変数をRangeで定義

 For Each Rng In Range("C3:C6") '範囲を指定
  If Rng = "B" Then 'もしセルが "B" だったら・・・
   Rng.Interior.ColorIndex = 3 'Cell を赤で塗りつぶす
  End If

 Next Rng

End Sub

f:id:tuna-kichi:20200801094136p:plain

                   
いつもの書き方は・・・

Sub セル範囲操作いつものやり方()

 DimAs Long 'Rowを格納する
 Dim c As Long 'Columnを格納する
 Dim LastR As Long '最終行を格納する

 c = Selection.Column 'Excel上でマクロを実行したい列を選択しておく
 LastR = Cells(Rows.Count, c).End(xlUp).Row '最終行を取得する

For r = 3 To LastR '
  If Cells(r, c) = "B" Then 'もしセルが "B" だったら・・・
   Cells(r, c).Interior.ColorIndex = 3 'Cell を赤で塗りつぶす
  End If

 Next r

End Sub

 

********************************************************

 

うーん・・・

いつもの書き方だと少し記述が多くなりますね。

でも、最終行を取得して指定範囲を可変に対応できるようにする分を

追加すると、同じくらいになるかな?

 

連続したセル範囲でなくても Selection を使って

適用できるみたいですけど、どんな場面で使えるかな?

想像できないな・・・

 

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

 

  Graspyで無料プログラミング講座を受講する