Page 204 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ワークシートチェンジイベントで・・・ kawata 02/10/15(火) 11:39 ┗Re:ワークシートチェンジイベントで・・・ ichinose 02/10/15(火) 12:00 ┗Re:ワークシートチェンジイベントで・・・ kawata 02/10/15(火) 12:29 ─────────────────────────────────────── ■題名 : ワークシートチェンジイベントで・・・ ■名前 : kawata ■日付 : 02/10/15(火) 11:39 -------------------------------------------------------------------------
はじめて質問させていただきます、よろしくお願いします。 Private Sub Worksheet_Change(ByVal Target As Range) Dim e_row As Long Application.EnableEvents = False e_row = Sheets("sheet1").Range("a65536").End(xlUp).Row If e_row < 4 Then Exit Sub With Target If .Column = 1 And .Row >= 4 And .Row <= e_row Then Select Case .Value Case 1 .Offset(, 1).Value = "山田" Case 2 .Offset(, 1).Value = "鈴木" Case 3 .Offset(, 1).Value = "佐藤" Case Else .Offset(, 1).Value = "" End Select End If End With Application.EnableEvents = True End Sub 上記のようなイベントマクロを組みました。これで単セルずつの動作は イメージ通りに動くのですが、例えば(A4:A7)を選択してDeleteした 場合等に、エラーになってしまします。(A4:A5)を選択して、1を 入力し、Ctrl+Enterでもエラー。 エラーは「型が一致しません」のエラーです。 修正すべきポイントをご教授ください、よろしくお願い致します。 |
▼kawata さん: こんにちは。 こんな風にしてみました。 '=============================================================== Private Sub Worksheet_Change(ByVal Target As Range) Dim e_row As Long Dim rng As Range Application.EnableEvents = False e_row = Sheets("sheet1").Range("a65536").End(xlUp).Row If e_row >= 4 Then For Each rng In Target With rng If .Column = 1 And .Row >= 4 And .Row <= e_row Then Select Case .Value Case 1 .Offset(, 1).Value = "山田" Case 2 .Offset(, 1).Value = "鈴木" Case 3 .Offset(, 1).Value = "佐藤" Case Else .Offset(, 1).Value = "" End Select End If End With Next End If Application.EnableEvents = True End Sub >例えば(A4:A7)を選択してDeleteした >場合等に、エラーになってしまします。(A4:A5)を選択して、1を >入力し、Ctrl+Enterでもエラー。 >エラーは「型が一致しません」のエラーです。 ↑は、大丈夫でした。 |
ichinose さん 、どうもありがとうございました。 望む動作そのままです、バッチリでした。 教えてもらってから解析に入ると、なるほど!っとうなずく ばかりです、これがヒラメクかどうかは ・・・もう、限界かなぁ〜、情けないなぁ〜。 また、よろしくお願い致します。 (回答の速いのにも驚きでした、ありがとうございました) |