Page 542 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼セルの値の種類 かず 03/1/14(火) 10:20 ┗Re:セルの値の種類 ポンタ 03/1/14(火) 12:43 ┗Re:セルの値の種類 かず 03/1/14(火) 13:27 ─────────────────────────────────────── ■題名 : セルの値の種類 ■名前 : かず <calros_09@yahoo.co.jp> ■日付 : 03/1/14(火) 10:20 -------------------------------------------------------------------------
Private Sub WorkSheet_Change(ByVal Target As Range) のイベントで「Target 」の入力された種類を取得したいのですが 例えば 入力されたのか、コピーされてきたのか、ペーストされたのか 等 どのような状態によってChangeなのか取得することは できるのでしょうか? おしえてください お願いします。 |
以前、挑戦したのですが、簡単ではないようです。 以下のコードである程度は判断できると思います。 参考程度に見てみて下さい。 Private Sub Worksheet_Change(ByVal Target As Range) Dim MyValue As String Dim MyRange As Range Dim Mes As String Dim i As Long If Application.CutCopyMode <> 0 Then Mes = "貼り付けられました" ElseIf Target.Count = 1 Then If Target.Value = "" Then Mes = "単一のセルが削除されました" Else Mes = "単一のセルが変更、または貼り付けられました" End If Else i = 0 For Each MyRange In Target If i = 0 Then MyValue = MyRange.Value Else If MyRange.Value <> MyValue Then Mes = "複数のセルが貼り付けられました" Exit For End If End If Next If Mes = "" Then If MyValue = "" Then Mes = "複数の範囲が削除されました" Else Mes = "複数のセルがCtrl+Enterで変更されたか、貼り付けられました" End If End If End If MsgBox (Mes) End Sub |
ポンタさん、ありがとうございます。 やはり簡単には取得できないのですね。 でも、すごくわかりやすいサンプルいただき ありがとうございました。 ちょっと工夫して使わさせていただきます。 |