- ベストアンサー
ワークシート名を変数に格納する方法
- VBA初心者の方がワークシート名を変数に格納してループ処理するための方法について質問されています。
- 具体的なマクロのコードが記載されており、指定されたワークシートのセルからデータを取得して別のワークシートに転記する処理を行っています。
- 質問者の悩みとして、複数のワークシートに対して同様の処理を行いたいがワークシート名を変数に格納できるかどうかが不明となっています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> 説明不足でした。ワークシートが8個ありその内の5つを変数に格納したいのですがtargetSheetで対照とする方法もわかりません。お手数ですがよろしくお願いします。 であるならば、その状態や条件も提示していただかないと的確に回答できませんよ。 8個のシート中、5個の対象シートがどこにあるか決まっていない。or 決まっている。 5個の対象シートの名前には決まった位置に共通する文字があり、残り 3個のシートには無い。 とか、、、 対象 5シートの位置が一番左から 5つである場合は For i = 1 to ThisWorkbook.Worksheets.Count Set targetSheet = ThisWorkbook.Worksheets(i) ' 処理いろいろ Next 4番目から 5つであれば For i = 4 To 8 Set targetSheet = ThisWorkbook.Worksheets(i) Next 対象シートのシート名の先頭が必ず "H-" で始まっており、対象外シートは別の文字から始まっているのであれば For Each targetSheet In ThisWorkbook.Worksheets If Left(targetSheet.Name, 2) = "H-" Then ' 処理いろいろ End If Next とか 規則性がぜんぜん無いけれど 5シートの各名前が決まっているのなら、あらかじめ文字列型の配列に対象シートのシート名を入れておき、 For i = 0 To 4 Set targetSheet = ThisWorkbook.Worksheets(targetNames(i)) Next とか。 または 対象 5シートの名前を 9つめのシートのセル A1~A5 に書いておけるならば、そのセルの値を読み込んで targetSheet で参照させるとか。 ともかく情報が必要です。
その他の回答 (1)
- temtecomai2
- ベストアンサー率61% (656/1071)
For Each の中で Worksheet 型のオブジェクト変数を使ってループ。 これだと対照ワークブックに含まれるすべてのシートが処理対象になる。 Dim targetSheet As Worksheet For Each targetSheet In ThisWorkbook.Worksheets targetSheet.Cells(cnt, 6).Value = Worksheets("入力").Cells(データ数, 8).Value targetSheet.Cells(cnt, 7).Value = Worksheets("入力").Cells(データ数, 9).Value targetSheet.Cells(cnt, 8).Value = Worksheets("入力").Cells(データ数, 27).Value targetSheet.Cells(cnt, 9).Value = Worksheets("入力").Cells(データ数, 19).Value targetSheet.Cells(cnt, 10).Value = Worksheets("入力").Cells(データ数, 20).Value targetSheet.Cells(cnt, 11).Value = Worksheets("入力").Cells(データ数, 21).Value targetSheet.Cells(cnt, 12).Value = Worksheets("入力").Cells(データ数, 10).Value targetSheet.Cells(cnt, 13).Value = Worksheets("入力").Cells(データ数, 11).Value targetSheet.Cells(cnt, 14).Value = Worksheets("入力").Cells(データ数, 22).Value targetSheet.Cells(cnt, 15).Value = Worksheets("入力").Cells(データ数, 23).Value Next
補足
説明不足でした。ワークシートが8個ありその内の5つを変数に格納したいのですがtargetSheetで対照とする方法もわかりません。お手数ですがよろしくお願いします。
お礼
対象シート名、数、文字位置も決まっておりますので最初に教授いただいた方法でやってみます。 お手数お掛けしました。ありがとうございました。