- 締切済み
【VBA】 超初心者です 複数のシートに転記したい
Sub べんきょう() Worksheets(Array(1, 3)).Select Range("A1").value = 20 End Sub もしくは Sub べんきょう() Worksheets("sheet1").Select Worksheets("sheet3").Select False Range("A1").value = 20 End Sub でやってもsheet1にしか転記されないんです!! ご指導よろしくお願いします!
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- onlyrom
- ベストアンサー率59% (228/384)
No2、onlyromです。 超エキスパートのWendy02さんから目から鱗の回答がありました。 複数シートを選択して、それらの同じセルに処理をしたい場合はSelectionプロパティが適しているようです。 '------------------------------------ Sub 色付けの勉強() Worksheets(Array(1, 3)).Select Rows("3:3").Select Selection.Interior.ColorIndex = 3 End Sub '------------------------------------------ Sub ひとつのセルへ値代入() Worksheets(Array(1, 3)).Select Range("A1").Select Selection.Value = 20 End Sub '---------------------------------- Sub 複数セルへ値代入() Worksheets(Array(1, 3)).Select Range("B3:C5").Select Selection.Value = 55 End Sub 以上。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 以下のマクロは、シートごとにひとつずつ入れているわけではありません。 これは、ワークシートのひとつの機能を間接的に利用した、特殊なマクロのひとつです。 あまり、「べんきょう」というものにはなりませんし、このようなマクロは、めったに使われない、というか、使わないワザのひとつです。 'シート1,3を入れる場合 Sub べんきょう2() Worksheets(Array(1, 3)).Select Range("A1").Select '範囲でも可能です。 Selection.Value = 15 '数式の場合は、.Formula を使います。 Worksheets(1).Select '作業グループ解除 End Sub '全シートを入れる場合 Sub べんきょう3() Worksheets.Select '全シートに入れる Range("A1").Select Selection.Value = 25 Worksheets(1).Select '作業グループ解除 End Sub
直接の回答ではありませんが、 VBAを使わなくても、Sheet1のセルA1のデータをShwwt2のA1と同じにしたいなら、 Sheet2のA1に「=Sheet1!$A$1」とすればよいだけです。 ご質問の例なら、Sheet1のセルA1に20と入力するだけでSheet2のA1ににも20と表示されます。
- onlyrom
- ベストアンサー率59% (228/384)
Sub べんきょう() Worksheets(Array(1, 3)).Select Range("A1").value = 20 End Sub これで説明します。 簡単の為に、Sheets(1)とSheet1は同じとする。 上記のように、Range("A1") のみではその前にシート名がないので ActiveSheetのセルA1を指定していることになるのです。 で、ActiveSheetは、1,3のどれかというと Worksheets(Array(1, 3)).Select と、1から先に指定してますから、ActiveSheetは、Sheet1 になるので、 Sheets("Sheet1").Range("A1").Value = 20 と指定したことになり、Sheet1にしか20は入らないのです。 また、同じように、 Worksheets(Array(3,1)).Select と、3から指定すると、Sheet3にのみ20が入ることになります。 要するに、質問者提示のコードは Sub べんきょう() Worksheets(Array(1, 3)).Select ActiveSheet.Range("A1").value = 20 又は、 Sheets(1).Range("A1").Value = 20 End Sub と、同じことだということです。 (結論) 複数のシートを選択して同じセルに同じ値を入れたい場合は、 そのセルをアクティブにして、ActiveCellプロパティを使用しなければいけない。 で、以下のようになります。 Sub べんきょう() Worksheets(Array(1, 3)).Select Range("A1").Activate ActiveCell.value = 20 End Sub 以上。
- merlionXX
- ベストアンサー率48% (1930/4007)
Sub べんきょう01() Worksheets(Array(1, 3)).Select Worksheets(1).Activate Range("A1").Select ActiveCell.Value = "30" End Sub Sub べんきょう02() Worksheets("sheet1").Select Worksheets("sheet3").Select False Worksheets("sheet1").Activate Range("A1").Select ActiveCell.Value = "20" End Sub Sub べんきょう03() Worksheets(1).Range("A1").Value = "10" Worksheets(3).Range("A1").Value = "10" End Sub ではいかがでしょう?
お礼
ありがとうございました。 単体のセルだとできたんですが 複数のセルを選択したら出来ませんでした Range("3:3").Activate ActiveCell.Interior.Color = xlNone このような選択をしたい場合はどうすればいいのでしょうか…?