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 変数

 

コレクションの操作

・同じ種類のオブジェクト(シートなど)の中に、
 条件を満たすものが存在するか調べる

                   

複数あるシートの中から、「vba」というシート名の

シートが存在するか調べる

 

Sub ふぉーいーち()

 Dim WS As Worksheet

 For Each WS In Worksheets 'Worksheetsがグループ名
  If WS.Name = "vba" Then '「vba」というシート名があったら・・・
   Sheets(WS.Name).Activate 'シートvba を表示させて、
   MsgBox "あるよ" 'メッセージボックスでお知らせ
  End If
 Next WS

End Sub

※Each・・・それぞれ、ひとつの

 Activate・・・活性化する、選択された状態にする

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

For Each は見たことはあったものの、実際に使用したことがないので、

すぐには理解できませんでした。

特に、「コレクション」とはなんじゃ???

 

ネットで調べてみたところ、同じ種類の集まり

または、自分で作成した集まりのようです。

とりあえずは、ブックとシートのみ該当すると覚えていても

問題ない気がします。

 

シートを操作する際は、シートの枚数を数えて、

その数を For Next の上限値に設定しています。

 

For Each を使用するメリットって何だろう?

シート枚数を数える処理がない分、記述が少し楽になるだけ?

どんな場面で使えるのかな?

 

※Collection・・・集めること、収集

 

 

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

 

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