[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『同じシートで同じ様なマクロを組む方法』(ぷう)
以下のマクロをコピーし、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.