![]() |
|
#6
|
|||
|
|||
|
.
This should work for you. The macro is pasted in ThisWorkbook module so it affects all sheets in the workbook. If you want it for only one sheet, you can move the macro into that sheets module: Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim RowShape As Shape
' ************************************************
' Check if entire rows are selected
' If they are then hide the shapes
' ************************************************
If Target.Address = Selection.EntireRow.Address Then
'If error occurs because shape does not exist, ignore the error
On Error Resume Next
Sh.Shapes("SelectedRow").Visible = msoFalse
'Return error handling to Excel
On Error GoTo 0
Exit Sub
End If
If Target.Address = Selection.EntireColumn.Address Then
'If error occurs because shape does not exist, ignore the error
On Error Resume Next
Sh.Shapes("SelectedCol").Visible = msoFalse
Sh.Shapes("SelectedRow").Visible = msoFalse
'Return error handling to Excel
On Error GoTo 0
Exit Sub
End If
' Set RowShape to be the SelectedRow
On Error Resume Next
Set RowShape = Sh.Shapes("SelectedRow")
On Error GoTo 0
'If RowShape doesn't exist, then create it
If RowShape Is Nothing Then
Sh.Shapes.AddShape(msoShapeRectangle, 1, 1, 1, 1).Select
With Selection.ShapeRange
.Fill.Visible = msoFalse ' Remove any fill color
.Name = "SelectedRow"
.Line.Weight = 2 ' Set line thickness e.g. 1, 1.5, 2 etc
.Line.ForeColor.RGB = RGB(146, 208, 80) ' Light Green.
'Can use vbBlack, vbWhite, vbRed, vbGreen, vbBlue , vbYellow, vbMagenta, vbCyan
'DashStyle = msoLineDash
' Can use : msoLineSolid, msoLineSysDot, msoLineSysDash, msoLineDash, msoLineDashDot, msoLineLongDash, msoLineLongDashDot, msoLineLongDashDotDot
' Default is msoLineSolid and does not need to be specified
End With
End If
' ************************************************
' Move the SelectedRow shape
' ************************************************
With Sh.Shapes("SelectedRow")
.Visible = msoTrue 'Make sure it is visible, it may have been hidden by previous selection
.Top = Target.Top
.Left = ActiveWindow.VisibleRange.Left
.Width = ActiveWindow.VisibleRange.Width
.Height = Target.Height
End With
Target.Select
End Sub
|
| Tags |
| highligh, highlight row, vba code |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
highlight the entire row of current cell
|
Joanne | Excel | 32 | 05-20-2017 07:30 AM |
issue with highlight macro word 2010
|
jamesnavoy | Word VBA | 2 | 01-29-2017 08:32 AM |
| PDF Conversion Issue - Background Tiled Image Size Issue | dustpie | Word | 1 | 10-23-2016 07:33 PM |
Excel 2007, highlight entire row based on data found in one cell
|
MSofficeBLUE | Excel | 2 | 10-15-2013 09:51 PM |
| find - reading highlight - highlight all / highlight doesn't stick when saved | bobk544 | Word | 3 | 04-15-2009 03:31 PM |