我给VBA下的定义:VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率,而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。
作为我的学员要利用我的积木编程思想,积木编程最重要的是积木如何搭建及拥有积木。在九套教程中我给出了大量的积木,同时讲解了如何搭建。为了让学员拥有更多的积木,我开始着手这部《VBA即用型代码手册(汉英)》的创作,这部手册约600页,集合约500多个的案例,案例我用汉语和英语同时发布,一方面学员从中可以更好的领会和掌握VBA中用到的一些英语知识,另一方面,大家可以看到各种各样的积木。这部手册是大家学习和工作中的不可多得的实用资料。今日的内容是:VBA即用型代码手册:突出显示所选单元格并保留单元格格式(矩形)【分享成果,随喜正能量】茶,可以品尝人生百味;书可以找回心灵的皈依。轻拥一米阳光入怀,和着书香,任流淌的心事,在季节中浅漾,生命就在这悠然的时光中婉约成一朵花。。
第四章 工作表代码Worksheet Codes
22 突出显示所选单元格并保留单元格格式(矩形)Highlight Selected Cells in Excel and Preserve Cell Formatting(Rectangles)Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim RowShape As Shape, ColShape As Shape
If Target.Address = Selection.EntireRow.Address Then
On Error Resume Next
Sh.Shapes("SelectedRow").Visible = msoFalse
Sh.Shapes("SelectedCol").Visible = msoFalse
On Error GoTo 0
Exit Sub
End If
'If Target.Address = ActiveCell.EntireColumn.Address Then
If Target.Address = Selection.EntireColumn.Address Then
On Error Resume Next
Sh.Shapes("SelectedCol").Visible = msoFalse
Sh.Shapes("SelectedRow").Visible = msoFalse
On Error GoTo 0
Exit Sub
End If
On Error Resume Next
Set RowShape = Sh.Shapes("SelectedRow")
Set ColShape = Sh.Shapes("SelectedCol")
On Error GoTo 0
If RowShape Is Nothing Then
Sh.Shapes.AddShape(msoShapeRectangle, 1, 1, 1, 1).Select
With Selection.ShapeRange
.Fill.Visible = msoFalse ' 删除任何填充颜色
.Name = "SelectedRow"
.Line.Weight = 2 ' 设置线条粗细 e.g. 1, 1.5, 2 etc
.Line.ForeColor.RGB = RGB(146, 208, 80) ' Light Green.
'可以使用 vbBlack, vbWhite, vbRed, vbGreen, vbBlue , vbYellow, vbMagenta, vbCyan
'DashStyle = msoLineDash
' 可以使用 : msoLineSolid, msoLineSysDot, msoLineSysDash, msoLineDash, msoLineDashDot, msoLineLongDash, msoLineLongDashDot, msoLineLongDashDotDot
' 默认为 msoLineSolid,无需指定
End With
End If
If ColShape Is Nothing Then
Sh.Shapes.AddShape(msoShapeRectangle, 1, 1, 1, 1).Select
With Selection.ShapeRange
.Fill.Visible = msoFalse
.Name = "SelectedCol"
.Line.Weight = 2
.Line.ForeColor.RGB = RGB(146, 208, 80) ' Light Green
End With
End If
With Sh.Shapes("SelectedRow")
.Visible = msoTrue '确保它是可见的,它可能已被先前的选择隐藏
.Top = Target.Top
.Left = ActiveWindow.VisibleRange.Left
.Width = ActiveWindow.VisibleRange.Width
.Height = Target.Height
End With
With Sh.Shapes("SelectedCol")
.Visible = msoTrue '确保它是可见的,它可能已被先前的选择隐藏
.Top = ActiveWindow.VisibleRange.Top
.Left = Target.Left
.Width = Target.Width
.Height = ActiveWindow.VisibleRange.Height
End With
Target.Select ' 如果使用光标键导航,必须这样做才能停止选择形状
End Sub
本节内容参考程序文件:Chapter04-3.xlsm我20多年的VBA实践经验,全部浓缩在下面的各个教程中: