在 Excel VBA 中通过 ActiveCell 突出显示行和列

扬·齐特尼亚克

我的目标是创建一个 VBA 宏,通过 突出显示行和列ActiveCell,因此我编写了以下代码:

Function Col_Letter(lngCol As Long) As String
    Dim vArr
    vArr = Split(Cells(1, lngCol).Address(True, False), "$")
    Col_Letter = vArr(0)
End Function

Public Sub SetCellPosition()
    Dim currentActiveCellAdress, columnLetter, rowRangeAddress, columnRangeAddress, selectionRangeAdress As String
    Dim rowNumber As Long

    columnLetter = Col_Letter(ActiveCell.Column)
    rowNumber = ActiveCell.Row

    rowRangeAddress = columnLetter & "1:" & columnLetter & rowNumber
    columnRangeAddress = "A" & rowNumber & ":" & columnLetter & rowNumber
    currentActiveCellAdress = ActiveCell.Address
    selectionRangeAdress = rowRangeAddress & ", " & columnRangeAddress

    Debug.Print selectionRangeAdress
    Debug.Print currentActiveCellAdress

    Range(selectionRangeAdress).Select
    Range(currentActiveCellAdress).Activate

End Sub

该宏运行良好。但是在调用该宏之后Workbook_SheetSelectionChange

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Call SetCellPosition
End Sub

它给了我一个错误,工作表中的选择在突出显示行和列ActiveCell和第一行之间闪烁,请参见图片。

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

宏可以在这里下载

亲切的问候。

冥王星

你的问题是你在一个SelectionChange事件中调用这个宏然而这一行:

Range(selectionRangeAdress).Select

算作一个SelectionChange事件,这意味着它将调用这个宏。这意味着你在宏中调用这个宏,导致一个递归函数,直到你用完堆栈空间并出错。为了防止这种情况,请Application.EnableEvents = False在开头和True结尾添加。这可以防止在宏运行时触发任何事件,从而防止函数在其中调用自身。

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
    Call SetCellPosition
Application.EnableEvents = True
End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

查找已用任何颜色填充的所有单元格并在excel vba中突出显示相应的列标题

通过Excel VBA保存和关闭Powerpoint

vba:activeCell中未定义的变量

在列宽和行高VBA中显示Excel形状的尺寸

Excel VBA-通过列重复宏

Excel VBA确定相对于activeCell的3X3范围的位置

使用VBA在Excel中突出显示所选行而不更改颜色

ActiveCell VBA出错并完全导致Excel崩溃

VBA Excel中的隐藏列

Excel VBA通过Afterupdate和Change事件显示货币

通过VBA宏突出显示excel中的重复行

在Excel 2010中,使用宏和VBA比较列中的数据并突出显示值(如果不同)

VBA Excel 2013在ActiveCell中的“ C”和“ D”列中写入,然后复制并粘贴,直到“ A”列更改为止

从activeCell中按字母选择一列(无activeCell.EntireColumn)

如何使用Excel VBA突出显示表的整个行

删除/突出显示Excel中跨多列的重复行

在VBA中使用activecell和offset

Excel-突出显示并删除行中重复的列值

简单循环遍历VBA中ActiveCell的行

Excel VBA根据今天的日期突出显示整个列

Excel VBA如何查找已筛选工作表的ActiveCell计数

如何使用Excel VBA通过Matlab在Excel中制作页眉和页脚

VBA for Excel,在编写函数时activecell不起作用

通过 VBA 在 Excel 数据透视表中显示具有重复数量的重复行

尝试通过 VBA 和 OLEDB 在 excel 中创建表格

Excel VBA - 从静态文件夹名称复制文件并粘贴到 ActiveCell 中的文件夹名称中

如何通过 Excel vba 自动调整访问表中的列

Excel宏以突出显示选定行中的所有列

Excel VBA:从输入的行和列数据中搜索表格并显示在列表框中