![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
VBA初心者です。ワークシートが5つあり各シートにデータを転記するマクロを作成したいのですがワークシート名を変数にしてループ処理することはできるのでしょうか?
下記はワークシート名"H"にだけ転記するマクロを作成してみましたがこの後がわからず悩んでいます。よろしくお願いします。
Dim データ行 As Integer
Dim cnt As Integer
Dim データ数 As Integer
cnt = 4
データ行 = Cells(Rows.Count, 8).End(xlUp).Row
For データ数 = 11 To データ行
If Worksheets("入力").Cells(データ数,1).Value= "2"Then
Worksheets("H").Cells(cnt, 6).Value = Worksheets("入力").Cells(データ数, 8).Value
Worksheets("H").Cells(cnt, 7).Value = Worksheets("入力").Cells(データ数, 9).Value
Worksheets("H").Cells(cnt, 8).Value = Worksheets("入力").Cells(データ数, 27).Value
Worksheets("H").Cells(cnt, 9).Value = Worksheets("入力").Cells(データ数, 19).Value
Worksheets("H").Cells(cnt, 10).Value = Worksheets("入力").Cells(データ数, 20).Value
Worksheets("H").Cells(cnt, 11).Value = Worksheets("入力").Cells(データ数, 21).Value
Worksheets("H").Cells(cnt, 12).Value = Worksheets("入力").Cells(データ数, 10).Value
Worksheets("H").Cells(cnt, 13).Value = Worksheets("入力").Cells(データ数, 11).Value
Worksheets("H").Cells(cnt, 14).Value = Worksheets("入力").Cells(データ数, 22).Value
Worksheets("H").Cells(cnt, 15).Value = Worksheets("入力").Cells(データ数, 23).Value
cnt = cnt + 1
End If
Next データ数
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_12.png?e8efa67)
No.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 で参照させるとか。
ともかく情報が必要です。
対象シート名、数、文字位置も決まっておりますので最初に教授いただいた方法でやってみます。
お手数お掛けしました。ありがとうございました。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_12.png?e8efa67)
No.1
- 回答日時:
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で対照とする方法もわかりません。お手数ですがよろしくお願いします。
補足日時:2009/02/11 14:26お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelでシートの違うデータでグ...
-
excelの不要な行の削除ができな...
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
シート削除して同名シート追加...
-
EXCELで2つのファイルから重複...
-
VBAで CTRL+HOMEの位置へ移動...
-
他のシートの一番下の行データ...
-
【エクセルマクロ】複数シート...
-
LiberaOfficeでグラフを別シー...
-
コンボボックスの参照先(ListF...
-
トランジスタの選び方
-
excelマクロで複数シート間のデ...
-
エクセルで名簿を50音で切り分ける
-
EXCELの種類別データ件数の抽出
-
エクセルのピポットテーブルで...
-
EXCEL マクロ
-
エクセルでデータを別シートに...
-
重いExcelファイルのことで教え...
-
エクセルで文字の大きさを変え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数シートからデータを拾って...
-
Excelでシートの違うデータでグ...
-
excelの不要な行の削除ができな...
-
エクセルファイルのシート毎の容量
-
シート削除して同名シート追加...
-
Excelで日付変更ごとに、自動的...
-
EXCELで2つのファイルから重複...
-
トランジスタの選び方
-
VBAで CTRL+HOMEの位置へ移動...
-
Excelマクロ 差分抽出の方法が...
-
EXCEL 複数行のデータを1行にま...
-
エクセル マクロ "特定の日付...
-
他のシートの一番下の行データ...
-
エクセルで名簿を50音で切り分ける
-
エクセル 縦に長い表の印刷時...
-
時間帯の重複を除いた集計について
-
ユーザーフォームで別シートを...
-
別々のシートの表をピボットテ...
-
【マクロ】同じフォルダ内にあ...
-
【エクセル」 特定のセルで条件...
おすすめ情報