Targetセルの値が欲しいと思っていて、Target.Value を使ってしまうとエラーの原因になる

progani


次の例では、ひとつのセルを選択した時は問題ないですが、複数のセルを選択してしまうと、
実行時エラー13 型が一致しません。」とエラーになってしまいます。


Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    
    MsgBox Target.Row & "    " & Target.Column & vbNewLine & Target.Value
    
End Sub

複数セルを選択した場合、Target.Row と、Target.Column は、アクティブセルの値を返しますが、Target.value は、アクティブセルの値を返すことはなく、エラーになるので危険です。

Target.Value ではなく、ActiveCell.Value を使えば、もし複数セルを選んでしまっても、アクティブなセルは一つなのでエラーになることはありません。

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    
    MsgBox Target.Row & "    " & Target.Column & vbNewLine & ActiveCell.Value
    
End Sub