| 
    
     |  | ▼こずえ さん: 
 >コンパクトにできますか?
 
 コンパクトというか、現状のコードだと 「エネ」シートのどのセルが変化しても
 Changeイベント・プロシージャ内の処理が走りますね?
 それは無駄なことなので、C列の入力(あるいはクリア)でなければ、
 チェックはしないことにしましょう。
 
 Private Sub Worksheet_Change(ByVal Target As Range)
 Dim c As Range
 Dim r As Range
 Dim ss As String, zz As String
 Dim i As Long
 If Target.Column <> 3 Then Exit Sub 'C列の Change でなければ抜ける
 
 zz = "C64:C65,C115:C116,C166:C167,C115:C116,"
 zz = zz & "C219:C220,C248:C250,C277:C278,C306:C307"
 ss = "CEGIDFHJ"
 For Each r In Range(zz).Areas
 i = i + 1
 If Not (Intersect(Target, r) Is Nothing) Then
 Set c = Worksheets("メニュー").Range(Mid$(ss, i, 1) & "10")
 If WorksheetFunction.CountBlank(r) = 2 Then
 c.ClearContents
 Else
 c.Value = "印 刷"
 End If
 Exit For
 End If
 Next
 End Sub
 
 |  |