VBA即用型代码手册:突出显示所选单元格并保留格式(矩形)

VBA语言専攻 2024-08-10 09:10:02

我给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实践经验,全部浓缩在下面的各个教程中:

0 阅读:3