• ベストアンサー

作ったマクロを複数のシートで実行できるようにしたい。

excelで以下のマクロを作りました。 Sub Macro1()   Dim 文字 As Range   For Each 文字 In Range("e6:ai21")    Select Case 文字.Text     Case "|"      文字.Font.Name = "MS Pゴシック"      文字.Font.Size = 35     Case Else      文字.Font.Name = "MS明朝"      文字.Font.Size = 11    End Select    Next 文字   End Sub 1つのシートのセル範囲(e6:ai21)に対するマクロです。 このマクロを、シートが10個(sheet1~sheet10)ありその内の8個(sheet3~sheet10に1度にできるようにするにはどうすればいいのですか。 教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

ちょっとスマートになりました。シートがいくつあっても対応できます。 Sub Macro1()  Dim 文字 As Range  Dim i As Integer   For i = 1 To Sheets.Count     With Sheets(i)      For Each 文字 In Range("e6:a121")       Select Case 文字.Text        Case "|"         文字.Font.Name = "MS Pゴシック"         文字.Font.Size = 35        Case Else         文字.Font.Name = "MS明朝"         文字.Font.Size = 11        End Select       Next 文字     End With   Next i End Sub

inchaku
質問者

お礼

こんなに簡単にできるのですね。 おかげさまで、うまくいきました。 ありがとうございました。

その他の回答 (2)

  • NCU
  • ベストアンサー率10% (32/318)
回答No.2

Sub 複数シートに書式設定()   Sheets(Array("Sheet3", "Sheet4", "Sheet5", "Sheet6", "Sheet7", "Sheet8", "Sheet9", "Sheet10")).Select   Range("E6:AI21").Select   With Selection.Font     .Name = "MS 明朝"     .Size = 11   End With   With Application.ReplaceFormat.Font     .Name = "MS Pゴシック"     .Size = 35   End With   Selection.Replace What:="|", Replacement:="|", LookAt:=xlWhole, ReplaceFormat:=True   Sheets("Sheet3").Select End Sub

inchaku
質問者

お礼

arrayを使うのですね。 初心者なのでarrayはよくわかりませんが、 実行したら、できました。 ありがとうございました。

回答No.1

これでいちよできそうですが、for each を使った、もっとスマートな方法があると思いますので、勉強してください。(どうしても思い出せないので) Dim 文字 As Range Dim Mybook As Workbook Dim i As Integer For i = 1 To 10 Sheets("sheet" & i).Select For Each 文字 In Range("e6:ai21") Select Case 文字.Text Case "|" 文字.Font.Name = "MS Pゴシック" 文字.Font.Size = 35 Case Else 文字.Font.Name = "MS明朝" 文字.Font.Size = 11 End Select Next 文字 Next i End Sub

inchaku
質問者

お礼

早々ありがとうございます。 2行目から3行目までは、このように処理するのですね。 参考になりました。 お礼遅れて申し訳ありません。

関連するQ&A

専門家に質問してみよう