Results 1 to 10 of 17

Thread: Highlight Current Row in Excel (VBA)

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Forum Guru Rick Rothstein's Avatar
    Join Date
    Feb 2012
    Posts
    662
    Rep Power
    15
    While this is different in theory from what you posted, it is similar in idea and I thought readers of this thread might find it interesting as well. This event code will highlight the row and column whose intersection is the active cell or cells. Note, because the code is changing the interior color of cells, that assumption is that no cells on the worksheet have their cells colored (if they do, those colors will be lost the first time a selection is made on the worksheet).

    Code:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Cells.Interior.ColorIndex = xlColorIndexNone
      Union(Target.EntireRow, Target.EntireColumn).Interior.ColorIndex = 6
    End Sub

  2. #2
    Member Rajan_Verma's Avatar
    Join Date
    Sep 2011
    Posts
    83
    Rep Power
    15
    Faster one :

    Code:
    Public strAddress As String
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If strAddress <> "" Then
           Union(Me.Range(strAddress).EntireColumn, Me.Range(strAddress).EntireRow).Interior.Color = xlColorIndexNone
        End If
           Union(Target.EntireColumn, Target.EntireRow).Interior.Color = 65535
           strAddress = Target.Address
    End Sub
    Last edited by Rajan_Verma; 04-20-2012 at 10:44 AM.

  3. #3
    Forum Guru Rick Rothstein's Avatar
    Join Date
    Feb 2012
    Posts
    662
    Rep Power
    15
    Quote Originally Posted by Rajan_Verma View Post
    Faster one :

    Code:
    Public strAddress As String
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If strAddress <> "" Then
           Union(Me.Range(strAddress).EntireColumn, Me.Range(strAddress).EntireRow).Interior.Color = xlColorIndexNone
        End If
           Union(Target.EntireColumn, Target.EntireRow).Interior.Color = 65535
           strAddress = Target.Address
    End Sub
    I am not completely convinced that your code really is any faster than what I posted. I threw a couple of Debug.Print Timer statements in each of our routines and selected around... both seemed to report 0 or 1 clock ticks worth of time (mostly 0) pretty much with the same frequency. I believe Excel must have some sort of optimized code underneath for processing all the cells on the sheet in a single reference... probably restricting itself, in the case of Interior Colors or ColorIndexess, to only cells with color in them.
    Last edited by Rick Rothstein; 04-20-2012 at 01:45 PM.

  4. #4
    Forum Guru Rick Rothstein's Avatar
    Join Date
    Feb 2012
    Posts
    662
    Rep Power
    15
    Quote Originally Posted by Rajan_Verma View Post
    Faster one :

    Code:
    Public strAddress As String
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If strAddress <> "" Then
           Union(Me.Range(strAddress).EntireColumn, Me.Range(strAddress).EntireRow).Interior.Color = xlColorIndexNone
        End If
           Union(Target.EntireColumn, Target.EntireRow).Interior.Color = 65535
           strAddress = Target.Address
    End Sub
    By the way, had your approach been measurably faster, then I might have written it this way instead...

    Code:
    Public PreviousTarget As Range
    
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If Not PreviousTarget Is Nothing Then PreviousTarget.Interior.ColorIndex = xlColorIndexNone
      Set PreviousTarget = Union(Target.EntireRow, Target.EntireColumn)
      PreviousTarget.Interior.ColorIndex = 6
    End Sub
    Last edited by Rick Rothstein; 04-20-2012 at 01:55 PM.

  5. #5
    Junior Member
    Join Date
    Dec 2012
    Posts
    3
    Rep Power
    0

    HI

    How About Only Select the Rows?????Plz tell me, I dont know much about VBA. thanks

    Code:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Cells.Interior.ColorIndex = xlColorIndexNone
      Union(Target.EntireRow, Target.EntireColumn).Interior.ColorIndex = 6
    End Sub
    [/QUOTE]

  6. #6
    Forum Guru Rick Rothstein's Avatar
    Join Date
    Feb 2012
    Posts
    662
    Rep Power
    15
    Quote Originally Posted by salman8200 View Post
    How About Only Select the Rows?????Plz tell me, I dont know much about VBA. thanks
    Code:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Cells.Interior.ColorIndex = xlColorIndexNone
      Union(Target.EntireRow, Target.EntireColumn).Interior.ColorIndex = 6
    End Sub
    Give this a try...
    Code:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Cells.Interior.ColorIndex = xlColorIndexNone
      Target.EntireRow.Interior.ColorIndex = 6
    End Sub

Similar Threads

  1. Replies: 4
    Last Post: 06-01-2013, 01:08 PM
  2. Highlight Active Cell’s Row and Column
    By Transformer in forum Tips, Tricks & Downloads (No Questions)
    Replies: 0
    Last Post: 05-17-2013, 12:32 AM
  3. Replies: 6
    Last Post: 05-16-2013, 09:56 AM
  4. Help- Locking column basis current date.
    By Rajesh Kr Joshi in forum Excel Help
    Replies: 1
    Last Post: 03-25-2013, 04:44 PM
  5. Moving Current Latest Data To New Workbook
    By Terry in forum Excel Help
    Replies: 1
    Last Post: 01-19-2013, 12:37 AM

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •