[[20120207163054]] 『同じシートで同じ様なマクロを組む方法』(ぷう) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『同じシートで同じ様なマクロを組む方法』(ぷう)

 以下のマクロをコピーし、2行目の最後、範囲の部分のみ変更し実行すると
 1行目の「Private Sub Worksheet_Change(ByVal Target As Range)」に対し
 コンパイルエラー:名前が適切ではありませんWorksheet_Changeと表示されます。
 VBA初心者で過去ログで同じような質問がありましたが良く理解できず
 再度質問させていただきました。

 https://www.excel.studio-kazu.jp/kw/20100316112608.html

 具体的な方法を教えていただけないでしょうか。
 よろしくお願いいたします。

 -----
 Private Sub Worksheet_Change(ByVal Target As Range)
 Set mychk = Application.Intersect(Target, Range("B3:E302"))
 If mychk Is Nothing Then
 Exit Sub
 Else
 With Target.Interior
 Select Case Target.Text
 Case "4"
 .ColorIndex = 3
 Case ""
 .ColorIndex = 36
 Case Else
 .ColorIndex = xlNone
 End Select
 End With
 End If
 End Sub
 -----

 Private Sub Worksheet_Change(ByVal Target As Range)
  〜〜〜
 End Sub
 Private Sub Worksheet_Change(ByVal Target As Range)
  ・・・
 End Sub
 となっているってこと?
 ひとつの中に全て記述してください。
 Private Sub Worksheet_Change(ByVal Target As Range)
  〜〜〜
  ・・・
 End Sub
 〜〜〜の部分で Exit Sub すると・・・の部分が実行されないので、
 適宜修正のこと。
 (cai)


 caiさん、ありがとうございます。
 この様な状態でしたが、自分なりに弄った結果、エラーは出なくなりました。
 が、VBAも動作しなくなりました。
 大変申し訳ないのですが、どう変更すれば良いのか教えていただけないでしょうか。

 特定の範囲に、ある値を入力すると、入力したセルの色が変わるというものです。 

 -----
 Private Sub Worksheet_Change(ByVal Target As Range)
 Set mychk = Application.Intersect(Target, Range("B3:E302"))
 If mychk Is Nothing Then
 Exit Sub
 Else
 With Target.Interior
 Select Case Target.Text
 Case "4"
 .ColorIndex = 3
 Case ""
 .ColorIndex = 36
 Case Else
 .ColorIndex = xlNone
 End Select
 End With
 End If
 End Sub
 Private Sub Worksheet_Change(ByVal Target As Range)
 Set mychk = Application.Intersect(Target, Range("H3:M302"))
 If mychk Is Nothing Then
 Exit Sub
 Else
 With Target.Interior
 Select Case Target.Text
 Case "6"
 .ColorIndex = 3
 Case ""
 .ColorIndex = 36
 Case Else
 .ColorIndex = xlNone
 End Select
 End With
 End If
 End Sub
 -----

 そのコードでエラーが出なくなっていますか。
 こちらでは依然としてエラーになります。

 Worksheet_Changeはひとつ。安直に並べました。
 Private Sub Worksheet_Change(ByVal Target As Range)
    Set mychk = Application.Intersect(Target, Range("B3:E302"))
    If mychk Is Nothing Then
 '        Exit Sub  '処理続行
    Else
        With Target.Interior
            Select Case Target.Text
                Case "4"
                    .ColorIndex = 3
                Case ""
                    .ColorIndex = 36
                Case Else
                    .ColorIndex = xlNone
            End Select
        End With
    End If

    Set mychk = Application.Intersect(Target, Range("H3:M302"))
    If mychk Is Nothing Then
 '        Exit Sub   '処理続行
    Else
        With Target.Interior
            Select Case Target.Text
                Case "6"
                    .ColorIndex = 3
                Case ""
                    .ColorIndex = 36
                Case Else
                    .ColorIndex = xlNone
            End Select
        End With
    End If
 End Sub
 (cai)


 Textプロパティを判定に使ったのは、興味深いのですが、それでも
 複数セルに同時入力には、対応しない場合があるので注意してください。

 プログラムの場合、そんな入力しないだろう? なんて思っても
 その入力が可能なら、それも考慮に入れなければなりません。

 ↑こういう観点からすると、ワークシートのChangeイベントって大変なんですよね!!
 Excelって、色んな入力方法が可能ですから・・・・。

 ichinose


 caiさん、続いてありがとうございます。
 無事に動作いたしました。本当に感謝しております!

 ichinoseさん
 まだまだ分からないことだらけで勉強中です。
 ありがとうございました。


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.