我正在尝试使用以下宏,但它甚至没有将其识别为宏,因此我无法运行宏。如果我将第一个更改为“私有/公共子测试()”它将运行,但是它表示我的目标对象未定义。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
Application.ScreenUpdating = False
' Clear the color of all the cells
Cells.Interior.ColorIndex = 0
With Target
' Highlight the entire row and column that contain the active cell
.EntireRow.Interior.ColorIndex = 8
.EntireColumn.Interior.ColorIndex = 8
End With
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:4)
您必须将宏放在工作表本身的代码中,而不是放在单独的模块中。
你正在做的是事件编程,它必须与你想要做出的反应相匹配。
在你习惯的意义上,它不是一个宏。事件将对发生的事情作出反应,并且无法正常运行。当您选择另一个单元格时(例如,从A1到B2的更改选择),您所做的代码会对选择的单元格的更改做出反应。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
选择改变时作出反应
If Target.Cells.Count > 1 Then Exit Sub
如果选择了多个单元格,则不要运行其余代码
Application.ScreenUpdating = False
关闭屏幕,所以在我们完成之前你看不到所有的变化
' Clear the color of all the cells
Cells.Interior.ColorIndex = 0
With Target
使用选中的单元格,
' Highlight the entire row and column that contain the active cell
.EntireRow.Interior.ColorIndex = 8
.EntireColumn.Interior.ColorIndex = 8
End With
Application.ScreenUpdating = True
现在所有的着色都已完成,将屏幕重新打开,以便看到我们工作的结果
End Sub
答案 1 :(得分:0)
在模块中试用此代码,将其称为宏:
Public Sub Highlight()
Application.ScreenUpdating = False
' Clear the color of all the cells
ActiveSheet.Cells.Interior.ColorIndex = 0
With ActiveCell
' Highlight the entire row and column that contain the active cell
.EntireRow.Interior.ColorIndex = 8
.EntireColumn.Interior.ColorIndex = 8
End With
Application.ScreenUpdating = True
End Sub
你必须使用Public
,因此这个子在excel的宏菜单中可用。在那里你可以“传统”使用它 - 我明白为它分配一个按钮或短按键。
答案 2 :(得分:0)
此答案基于您希望代码在用户更改所选单元格后作为EVENT运行的假设
如果您希望此代码仅在1个工作表中运行,请将其放在工作表对象中
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
Application.ScreenUpdating = False
' Clear the color of all the cells
Target.Parent.Cells.Interior.ColorIndex = 0
With Target
' Highlight the entire row and column that contain the active cell
.EntireRow.Interior.ColorIndex = 8
.EntireColumn.Interior.ColorIndex = 8
End With
Application.ScreenUpdating = True
End Sub
如果您希望在所有工作表中运行此项,请将其放在THISWORKBOOK OBJECT中(如果您想省略/包含可以在sh上过滤的工作表)
选项明确
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
Application.ScreenUpdating = False
' Clear the color of all the cells
Sh.Cells.Interior.ColorIndex = 0
With Target
' Highlight the entire row and column that contain the active cell
.EntireRow.Interior.ColorIndex = 8
.EntireColumn.Interior.ColorIndex = 8
End With
Application.ScreenUpdating = True
End Sub