過去ログ

                                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でもエラー。
エラーは「型が一致しません」のエラーです。

修正すべきポイントをご教授ください、よろしくお願い致します。
 ───────────────────────────────────────  ■題名 : Re:ワークシートチェンジイベントで・・・  ■名前 : ichinose  ■日付 : 02/10/15(火) 12:00  -------------------------------------------------------------------------
   ▼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でもエラー。
>エラーは「型が一致しません」のエラーです。
↑は、大丈夫でした。
 ───────────────────────────────────────  ■題名 : Re:ワークシートチェンジイベントで・・・  ■名前 : kawata  ■日付 : 02/10/15(火) 12:29  -------------------------------------------------------------------------
   ichinose さん 、どうもありがとうございました。

望む動作そのままです、バッチリでした。
教えてもらってから解析に入ると、なるほど!っとうなずく
ばかりです、これがヒラメクかどうかは
 ・・・もう、限界かなぁ〜、情けないなぁ〜。

また、よろしくお願い致します。
(回答の速いのにも驚きでした、ありがとうございました)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 204