【发布时间】:2016-09-26 12:54:51
【问题描述】:
我正在使用 VBA 代码,当单元格选择器移动时,它会突出显示活动单元格的边框颜色。
代码是
Private mOutline As Shape
Private Const SelectedShapeName As String = "Selection Box"
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim SelectedShape As Shape
Dim SelectedArea As Range
On Error Resume Next
For Each SelectedShape In Sh.Shapes
If SelectedShape.Name = SelectedShapeName Then
SelectedShape.Delete
End If
Next SelectedShape
For Each SelectedArea In Selection.Areas
Set mOutline = ActiveSheet.Shapes.AddShape(msoShapeRectangle, SelectedArea.Left, SelectedArea.Top, SelectedArea.Width, SelectedArea.Height)
With mOutline.OLEFormat.Object.ShapeRange
.Fill.Visible = msoFalse
.Line.ForeColor.RGB = RGB(255, 0, 0)
.Line.Transparency = 0
.Line.Weight = 3
End With
mOutline.Name = SelectedShapeName
Next SelectedArea
On Error GoTo 0 End Sub
当我右键单击工作表中的列标题时,Excel 突然停止工作并存在。
有谁知道是什么导致了这个错误,如果知道,我该如何修改我的代码来避免这种情况?
谢谢。
【问题讨论】:
-
取出
On Error Resume Next并在调试器中单步执行。哪一行导致崩溃? -
在
Set mOutline = ActiveSheet.Shapes.AddShape(msoShapeRectangle, SelectedArea.Left, SelectedArea.Top, SelectedArea.Width, SelectedArea.Height)行出现运行时错误“1004”“特定值超出范围” -
当您说“右键单击列标题”时,您指的是单元格还是列选择区域?
-
列选择区域。
-
你应该测试一下
Selection.Rows.Count = Rows.Count,因为我看不出在整个列周围放置一个矩形有什么好处,即使它确实有效。
标签: excel error-handling excel-2013 vba