質問: エクセルvba (byval target as range)について シートのイベントプロシージャーが private sub worksheet_selectionchange(byval target as range) end sub となりますが (byval target as range)部分は何なのでしょうか? 何のためにあるのかわかりません。 private sub worksheet_selectionchange() end sub としたらエラーが返ってきました。 理由を教えてください。 よろしくお願いします。
回答: こんにちは >target=activecell >と言う認識でよろしいでしょうか? #5でkenken_spさんが説明されていますが、補足です。 セルを一つだけ選択したときには、 target=activecell と考えても問題ありません しかし、複数の範囲を選択したときは、 target=activecell はなりません。 private sub worksheet_selectionchange(byval target as range) では target=selection です。 注! private sub worksheet_selectionchange(byval target as range) では target=selection 成り立っていますが、そうでない場合もあります。 selectionは「選択されている物」という意味です。 そのために、場合によって内容が異なります。 例えば、オートシェイプが選択されているときには、selectionは選択されているオートシェイプになります。 以下のコードを試してみてください。 上段にtargetのアドレス 中段にactivecellのアドレス 下段にselectionのアドレス が表示されます。 private sub worksheet_selectionchange(byval target as range) msgbox target.address & chr(13) & activecell.address & chr(13) & selection.address end sub