Vba 宏一次调整Excel表格中的整行

Vba 宏一次调整Excel表格中的整行,vba,excel,Vba,Excel,我需要一种基于ActiveCell以编程方式调整excel表格中整行的方法,而不管它在哪个表格中或表格在哪里。我在用 ActiveSheet.ListObjects(1).ListRows(ActiveCell.Row - 1).Range.Select Selection.Style = "Good" 但是在将表向下移动五行之后,它现在将动作从ActiveCell再向下应用五行 我试图找到一种方法,用某种类型的-.headerrorwrange.Row来替换-1,但在激活宏时什么也没有发生。

我需要一种基于ActiveCell以编程方式调整excel表格中整行的方法,而不管它在哪个表格中或表格在哪里。我在用

ActiveSheet.ListObjects(1).ListRows(ActiveCell.Row - 1).Range.Select
Selection.Style = "Good"
但是在将表向下移动五行之后,它现在将动作从ActiveCell再向下应用五行


我试图找到一种方法,用某种类型的-.headerrorwrange.Row来替换-1,但在激活宏时什么也没有发生。

如果我正确理解了问题,请尝试使用以下代码并报告:

ActiveSheet.ListObjects(1).ListRows(ActiveCell.Row - ActiveSheet.ListObjects(1).HeaderRowRange.Row).Range.Select

如果我正确理解了问题,请尝试使用以下代码并报告:

ActiveSheet.ListObjects(1).ListRows(ActiveCell.Row - ActiveSheet.ListObjects(1).HeaderRowRange.Row).Range.Select

您可以利用ActiveCell.ListObject属性。这使得它更加灵活,例如,如果工作表中有两个表:

Sub FormatActiveTableRow()
Dim lo As Excel.ListObject

Set lo = ActiveCell.ListObject
If Not lo Is Nothing Then
    Intersect(ActiveCell.EntireRow, lo.Range).Style = "Good"
End If
End Sub

您可以利用ActiveCell.ListObject属性。这使得它更加灵活,例如,如果工作表中有两个表:

Sub FormatActiveTableRow()
Dim lo As Excel.ListObject

Set lo = ActiveCell.ListObject
If Not lo Is Nothing Then
    Intersect(ActiveCell.EntireRow, lo.Range).Style = "Good"
End If
End Sub

无论光标在哪里,ActiveSheet.ListObject1都将引用同一个表。我推断,每个工作表只有一个表,但这可能会使您陷入困境。ActiveSheet.ListObject1将引用同一个表,无论光标位于何处。我推断你们每张纸只有一张桌子,但这可能会把你们搞砸。太好了,谢谢。我之前试过了,但我一定是打错了什么,因为它抛出了一个方法不可用的错误。太好了,谢谢。我之前试过了,但肯定是打字错误或其他什么,因为它抛出了一个method not available错误。我知道答案已经被接受了,但我今天早些时候写了这篇文章。但我的手机代码格式化技术不太好。我喜欢这个问题,并认为它可能仍然有意思。你的观点很有用。可以根据activecell的位置引用该表,而不是直接引用该表。投赞成票。为了社区的利益,为了更容易找到最有用的答案,我被接受了@user3561813有一个答案在我的情况下有效,但你的答案在更多情况下有效。我知道答案已经被接受,但我今天早些时候写了这个。但我的手机代码格式化技术不太好。我喜欢这个问题,并认为它可能仍然有意思。你的观点很有用。可以根据activecell的位置引用该表,而不是直接引用该表。投赞成票。为了社区的利益,为了更容易找到最有用的答案,我被接受了@user3561813的答案在我的情况下有效,但你的答案在更多情况下有效。