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 データ数
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:26No.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 で参照させるとか。
ともかく情報が必要です。
対象シート名、数、文字位置も決まっておりますので最初に教授いただいた方法でやってみます。
お手数お掛けしました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) マクロ(データ取得と転記)について教えてください 3 2022/12/24 12:18
- Visual Basic(VBA) 日付を重複させずに数えたい 4 2022/12/04 16:26
- Visual Basic(VBA) 配列の勉強をしています。使用する変数の意味、検索条件の書き方が難しいです。 2 2022/09/15 14:06
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelでシートの違うデータでグ...
-
複数シートからデータを拾って...
-
エクセルファイルのシート毎の容量
-
トランジスタの選び方
-
ファンモータが作動しない。
-
EXCELで2つのファイルから重複...
-
エクセルで一覧表から担当別シ...
-
電子部品のデータシートの探し方
-
エクセル2010 別シートへのデー...
-
EXCEL 複数行のデータを1行にま...
-
excel vlookup 新担当者への実...
-
エクセルで名簿を50音で切り分ける
-
エクセル マクロ "特定の日付...
-
(VBAにて)日付でデータを抽出す...
-
エクセルで複数の条件を抽出し...
-
Googleスプレッドシートフィル...
-
エクセルで抽出分だけを別シー...
-
エクセルで1つのシートを拠点...
-
【エクセルマクロ】複数シート...
-
エクセルで行の自動非表示の方法は
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
Excelでシートの違うデータでグ...
-
シート削除して同名シート追加...
-
excelの不要な行の削除ができな...
-
Excelで日付変更ごとに、自動的...
-
VBAで CTRL+HOMEの位置へ移動...
-
トランジスタの選び方
-
EXCELで2つのファイルから重複...
-
EXCEL 複数行のデータを1行にま...
-
他のシートの一番下の行データ...
-
オートフィルタで抽出したデー...
-
エクセルのカメラ機能について
-
(VBAにて)日付でデータを抽出す...
-
エクセルで名簿を50音で切り分ける
-
別々のシートの表をピボットテ...
-
Excel 売上管理シートに入力し...
-
Excelマクロ 差分抽出の方法が...
-
EXCEL の表を一行ずつシートに...
-
エクセルVBAで、特定文字から始...
おすすめ情報