アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になります。
OSはwin10、エクセルは2016 です。

下記の様に
  Private Sub Worksheet_Change(ByVal Target As Range)
 が2ヶ(下記の 1) 2) )ある時一つにまとめたいのですがどうすれば
 よろしいですか。
  ※下記の 1)、2) でRangeが違います。
1)
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("E2:E2000")) Is Nothing Then Exit Sub
Application.EnableEvents = False
If Target.Value = 1 Then Target.Value = "友人"
If Target.Value = 2 Then Target.Value = "知人"
If Target.Value = 3 Then Target.Value = "親戚"
If Target.Value = 4 Then Target.Value = "会社"
Application.EnableEvents = True
End Sub

2)
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("G2:G2000")) Is Nothing Then Exit Sub
Application.EnableEvents = False
If Target.Value = 5 Then Target.Value = "様"
If Target.Value = 6 Then Target.Value = "殿"
If Target.Value = 7 Then Target.Value = "先生"
Application.EnableEvents = True
End Sub

質問者からの補足コメント

  • うーん・・・

    私なりに下記のように反映しましたがうまく行きません。
    誠に申し訳ありませんが再指導いただけませんか。

    ご指導いただいたのを私なりのコードをと思いましたが文が長くここに記載できませんでした。

    わがまま勝手ですがよろしくお願いいたします

    「Private Sub Workshee」の補足画像1
    No.1の回答に寄せられた補足コメントです。 補足日時:2019/04/18 19:47

A 回答 (2件)

No.1です。



Private Sub Worksheet_Change(ByVal Target As Range)
 Dim myAry As Variant
  If Intersect(Target, Range("E2:E2000,G2:G2000")) Is Nothing Or Target.Count > 1 Then Exit Sub
   With Target
    Application.EnableEvents = False
     If .Column = 5 Then
      myAry = Array("友人", "知人", "親戚", "会社")
       If .Value >= 1 And .Value <= 4 Then
        .Value = myAry(.Value - 1)
       Else
        MsgBox "1~4 の整数を入力"
        .Select
       End If
     Else
      myAry = Array("様", "殿", "先生")
       If .Value >= 5 And .Value <= 7 Then
        .Value = myAry(.Value - 5)
       Else
        MsgBox "5~7 の整数を入力"
        .Select
       End If
     End If
    Application.EnableEvents = True
   End With
End Sub

こんな感じをお望みなのでしょうかね。

※ 上記コードは質問文どおり、E列・G列の2~2000行目までの範囲で動くコードですが、
画像を拝見するとC列に何か操作が必要なのでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

うまくできました。
我がままな質問お許しください。

ありがとうございました。

お礼日時:2019/04/18 20:22

こんばんは!



 If Intersect(Target, Range("E2:E2000,G2:G2000")) Is Nothing Or Target.Count > 1 Then Exit Sub
  If Target.Column = 5 Then
   '//E列の場合の処理//
  Else
   '//G列の場合の処理//
 End If

のように分岐すればよいと思います。m(_ _)m
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A