- ベストアンサー
エクセル:VBAで範囲選択について
クリックしたセルを操作者に目立たせるために、 ActiveCell を交差する形で、行と列の反転表示を試みています。 例:D6セルをクリックすると、D列と6行を同時に範囲選択させる Range("D:D,6:6").Select クリックしたセル番地は、 ActiveCell.Column ActiveCell.Row で求まると思うのですが、それから先の処理方法が思い浮かびません。 よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ThisWorkbook モジュールに、 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.EnableEvents = False With Target Range(.EntireColumn.Address & "," & .EntireRow.Address).Select .Activate End With Application.EnableEvents = True End Sub
その他の回答 (2)
- mitarashi
- ベストアンサー率59% (574/965)
反転表示も大変そうなので、ANo.1さんの色表示で正解と思いますが、直前のセル座標を保存するのに、セルにIDという属性があって、値を保存できる事を思い出して使ってみました。A1セルを削除してしまうと、誤動作しますが、出来合の表で、一番端の列・行をいじることは少ないかなと考えます。ご参考まで。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim lastAddress As String '行列ごと選択とか、複数セル選択は対象外としたが、お好みにより変更下さい。 If Target.Cells.Count > 1 Then Exit Sub lastAddress = ActiveSheet.Range("A1").ID If lastAddress <> "" Then ActiveSheet.Range(lastAddress).EntireColumn.Interior.ColorIndex = xlNone ActiveSheet.Range(lastAddress).EntireRow.Interior.ColorIndex = xlNone End If Target.EntireColumn.Interior.ColorIndex = 15 Target.EntireRow.Interior.ColorIndex = 15 ActiveSheet.Range("A1").ID = Target.Address End Sub
お礼
回答ありがとうございます。 今後の参考にさせて頂きます
- imogasi
- ベストアンサー率27% (4737/17069)
質問を見て、かっても同様質問があって、納得のいくように、行かなかった点を思出だした(下記(2))。 この質問では2つ問題を思いました。 (1)列行は全列・全行を色づけるのか? どちらでもコード上は余り差が無いが。 (2)直前の色づけたものを解除することのやり方。 Targetでは直前の選択セル番地が捉えられない。 次回のクリックまで、その前回情報を引き継がないといけない。 ほかには適当な仕掛けはなさそうだし。PUBLIC変数でもと思ったが。 下記はStaticで下記はこなした。 ーー Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.EnableEvents = False Static t Static rm Static cm If t = 0 Then Else Rows(rm).Interior.ColorIndex = xlNone Columns(cm).Interior.ColorIndex = xlNone End If t = t + 1 r = Target.Row c = Target.Column Rows(r & ":" & r).Interior.ColorIndex = 6 Columns(c).Interior.ColorIndex = 6 rm = r cm = c Application.EnableEvents = True End Sub ーーー 浅学のためか、小生の苦労・試行錯誤が詰まってます。
お礼
早速の回答ありがとうございます。 反転表示ばかり考えて、色変更とは思い付きませんでした。 参考にさせて頂きます。
お礼
スマートな回答ありがとうございます。 まさに私が実現したかった内容です。 お陰でスッキリしました。