在excel中选择第一个listRow时运行vba代码

时间:2015-05-16 16:32:33

标签: excel excel-vba vba

在最初创建表时的结构化表中,listRow为0。 我们在Sheet1中说我们有一个列表对象Table1 我需要运行以下代码: ThisWorkbook.Worksheets("Sheet1").ListObjects("Table1").ListRows.Add AlwaysInsert:=True。 当Table1没有行且第一行被单击或介入时,或第一行中的任何单元格(标题后面的行)被选中。

我需要这个,因为受保护工作表中的锁定公式单元格不起作用,除非至少有一个列表行。

问题解释:

enter image description here

1 个答案:

答案 0 :(得分:1)

发帖讨论:

问题在于您创建表格的方式,添加公式并在删除行后立即保护工作表。您还试图在受保护的工作表上运行代码。

试试这个

创建表格

我以单元格A1:C1

为例

一个。在单元格A1,B1,C1中,键入“Header1,Header2,Header3”

B中。 Next选择A1:C1并单击Insert |表

℃。单击复选框“我的表有标题”

d。接下来在单元格C2中,键入公式

=IF([Header1]+[Header2]=0,"",[Header1]+[Header2])`

电子。保护纸张,保持Col C锁定和A / B解锁。

你已经完成了。

使用此代码添加新行

Sub Sample()
    With ThisWorkbook.Worksheets("Sheet1")
        .Unprotect 
        .ListObjects("Table1").ListRows.Add AlwaysInsert:=True
        .Protect
    End With
End Sub

请记住,当您通过删除行重置表格时,请确保在单元格A2和B2中键入内容,然后在保护工作表之前清除单元格,否则您将丢失公式。

希望这有帮助