Excel VBA 質問スレッド No.740 (解決済)

For Each

投稿者 : ぽぽ     投稿日時 : 2022/05/23(Mon) 17:08:36     OS : 未指定     EXCEL : 未指定
VBAのFor Eachの使い方を
超絶バカな私でもわかるように
どなたかご説明していただけないでしょうか?

[返信 1] Re : For Each
投稿者 : さんこう     投稿日時 : 2022/05/23(Mon) 17:16:07
WEBサイトの解説動画でも見てはいかがでしょうか。

https://www.google.com/search?q=vba+for+each+%E5%88%9D%E5%BF%83%E8%80%85+%E5%8B%95%E7%94%BB

[返信 2] Re : For Each
投稿者 : てらてら     投稿日時 : 2022/05/23(Mon) 19:37:44
こんにちは。

For Eachは、簡単に言うと繰り返し処理の一種です。
なので、For文やWhile文などで書き表すこともできます。

For Eachでは、繰り返すものがオブジェクトとその集合体であるコレクションのときに使います。
オブジェクトとは、簡単に言うとExcelの場合はシートとか、セルなどExcelの部品だったりします。
コレクションは、そのオブジェクトの配列みないなものです。

書き方としては、

Sub ForEachTest()

Dim ws As Worksheet

For Each ws In Worksheets 'ws=オブジェクト  Worksheets=コレクション
MsgBox ws.name 'シート名を表示
Next ws

End Sub


こんな感じ。
Inの後にブック内のワークシートの集合体を指定して、
Eachの後のワークシートオブジェクトに1個づつ入っていきます。


ちなみにFor文で書くと、

Sub ForTest()

Dim i As Long

For i = 1 To Worksheets.Count
MsgBox Worksheets(i).name
Next i

End Sub


iはカウント用の変数で、1から、ワークシートの数分繰り返すので、
Forの中では、何番目のワークシートなのかを指定しています。

両者の違いは、ざっくりとですが、

For Each ws In Worksheets は、次、次、次、、、で最後まで行ったら終わり。

For i = 1 To Worksheets.Countは、カウント数を決めてから、1,2,3、、、でカウント数まで。

という感じです。
もちろんループ内の書き方も違ってきます。
個人的は、For文の方が万能だと思っています。

[返信 3] Re : For Each
投稿者 : ぽぽ     投稿日時 : 2022/05/24(Tue) 13:34:26
■[返信 1] さんこうさん(2022-05-23 17:16:07)の記事
> WEBサイトの解説動画でも見てはいかがでしょうか。

> https://www.google.com/search?q=vba+for+each+%E5%88%9D%E5%BF%83%E8%80%85+%E5%8B%95%E7%94%BB


さんこう様
ご返信ありがとうございました(´;ω;`)

当掲示板について
返信入力フォーム
お 名 前  :
内  容   :
ステータス  : この質問を解決済みにする

認証コード  :
        キャプチャ画像


( 処理日時 : 2022-07-07 13:13:10 )

Page
Top