Vba 在表内运行宏

Vba 在表内运行宏,vba,excel,Vba,Excel,我希望运行一个宏,将表中的一行的背景色设置为绿色,但如果有两个表相邻,则第二个表也会将该行设置为绿色: 有没有办法只在第一个表格中获得背景色,而不命名表格。(例如,不命名“设置表格1行颜色为绿色”)。以下是我正在使用的代码: Sub TEST() Set LeftCell = Cells(ActiveCell.Row, 1) Set RightCell = Cells(ActiveCell.Row, Columns.Count) If IsEmpty(LeftCell) Then Set

我希望运行一个宏,将表中的一行的背景色设置为绿色,但如果有两个表相邻,则第二个表也会将该行设置为绿色:

有没有办法只在第一个表格中获得背景色,而不命名表格。(例如,不命名“设置表格1行颜色为绿色”)。以下是我正在使用的代码:

Sub TEST()



Set LeftCell = Cells(ActiveCell.Row, 1)
Set RightCell = Cells(ActiveCell.Row, Columns.Count)
If IsEmpty(LeftCell) Then Set LeftCell = LeftCell.End(xlToRight)
If IsEmpty(RightCell) Then Set RightCell = RightCell.End(xlToLeft)
If LeftCell.Column = Columns.Count And RightCell.Column = 1 Then
    ActiveCell.Select
Else
    Range(LeftCell, RightCell).Select
End If

Selection.Interior.Color = RGB(146, 208, 80)

End Sub
谢谢 罗克萨纳


请尝试一下

Sub FillRowColor()
    Dim tbl As ListObject
    Dim tblName
    Dim cell As Range
    Set cell = ActiveCell
    On Error Resume Next
    tblName = cell.ListObject.Name
    On Error GoTo 0
    If tblName <> "" Then
        Set tbl = ActiveCell.ListObject
        Set tbl = ActiveSheet.ListObjects(1)
        tbl.Range.Interior.ColorIndex = xlNone
        tbl.Range.Rows(ActiveCell.Row).Interior.Color = RGB(146, 208, 80)
    Else
        MsgBox "ActiveCell is not in the table.", vbCritical
    End If
End Sub
子FillRowColor()
作为ListObject的Dim tbl
模糊tblName
暗淡单元格作为范围
设置单元格=活动单元格
出错时继续下一步
tblName=cell.ListObject.Name
错误转到0
如果tblName为“”,则
设置tbl=ActiveCell.ListObject
Set tbl=ActiveSheet.ListObjects(1)
tbl.Range.Interior.ColorIndex=xlNone
tbl.Range.Rows(ActiveCell.Row).Interior.Color=RGB(146、208、80)
其他的
MsgBox“ActiveCell不在表中”。vbCritical
如果结束
端接头

请尝试一下

Sub FillRowColor()
    Dim tbl As ListObject
    Dim tblName
    Dim cell As Range
    Set cell = ActiveCell
    On Error Resume Next
    tblName = cell.ListObject.Name
    On Error GoTo 0
    If tblName <> "" Then
        Set tbl = ActiveCell.ListObject
        Set tbl = ActiveSheet.ListObjects(1)
        tbl.Range.Interior.ColorIndex = xlNone
        tbl.Range.Rows(ActiveCell.Row).Interior.Color = RGB(146, 208, 80)
    Else
        MsgBox "ActiveCell is not in the table.", vbCritical
    End If
End Sub
子FillRowColor()
作为ListObject的Dim tbl
模糊tblName
暗淡单元格作为范围
设置单元格=活动单元格
出错时继续下一步
tblName=cell.ListObject.Name
错误转到0
如果tblName为“”,则
设置tbl=ActiveCell.ListObject
Set tbl=ActiveSheet.ListObjects(1)
tbl.Range.Interior.ColorIndex=xlNone
tbl.Range.Rows(ActiveCell.Row).Interior.Color=RGB(146、208、80)
其他的
MsgBox“ActiveCell不在表中”。vbCritical
如果结束
端接头

所以您希望它保持绿色,直到他们输入某个内容为止?如果是这样的话,使用条件格式会更好。是的,这正是我想要的。但是在这种情况下,我如何使用条件格式呢?你能澄清一下你想要发生什么吗?我仍然不清楚你期望的行为。你能在你的问题中发布一些额外的屏幕截图,显示在没有文本的情况下它应该是什么样子,以及文本输入到某些单元格后它应该是什么样子。所以你希望它保持绿色,直到他们输入一些内容为止?如果是这样的话,使用条件格式会更好。是的,这正是我想要的。但是在这种情况下,我如何使用条件格式呢?你能澄清一下你想要发生什么吗?我仍然不清楚你期望的行为。你能在你的问题中发布一些额外的屏幕截图,显示在没有文本的情况下应该是什么样子,以及文本输入到某些单元格后应该是什么样子。sktneer,如果我运行此代码,我会得到表格中所有单元格的黑色背景,因此我删除了“=RGB(146,208,80)”后面的第二个内部颜色。不,它把所有的单元格和行都涂成绿色。@RoxanaVlad我的错,我不知道它们是如何复制的,可能是在复制和粘贴代码的过程中。我已经编辑了代码,它应该可以为您工作。我也这么做了,但现在我让表中的所有单元格都填充了颜色。根据代码逻辑,表中第1列为空的任何行,该行都将高亮显示为绿色。如果您的表为空,则所有行都将显示为绿色。您希望如何将表格行涂成绿色,即表格行涂成绿色的条件是什么?很抱歉我的答复太晚。我添加了一张关于我的结果的新照片。动态表中的每一行都有多个宏。例如,如果我的活动单元格是表中剩余的第一个单元格,我想在表中为一个特定行上色。我的宏现在运行,直到它在第二个表中找到最后一个单元格,而不是在第一个表中。sktneer,如果我运行此代码,我会得到表中所有的单元格,背景为黑色,因此我删除了“=RGB(146,208,80)”后面的第二个内部颜色。不,它把所有的单元格和行都涂成绿色。@RoxanaVlad我的错,我不知道它们是如何复制的,可能是在复制和粘贴代码的过程中。我已经编辑了代码,它应该可以为您工作。我也这么做了,但现在我让表中的所有单元格都填充了颜色。根据代码逻辑,表中第1列为空的任何行,该行都将高亮显示为绿色。如果您的表为空,则所有行都将显示为绿色。您希望如何将表格行涂成绿色,即表格行涂成绿色的条件是什么?很抱歉我的答复太晚。我添加了一张关于我的结果的新照片。动态表中的每一行都有多个宏。例如,如果我的活动单元格是表中剩余的第一个单元格,我想在表中为一个特定行上色。我的宏现在运行,直到它在第二个表中找到最后一个单元格,而不是在第一个表中。