testing空的Listobject头

如何testing一个Excel(Version> = 2010)的ListObject头是否为空?

如果我select这样一个空头 ,那么

?selection.value -> Column1 (or Spalte1, depending on client language) ?isEmpty(selection) -> false 

空头

所以就VBA而言,它performance得像一个非空单元。

非解决scheme:写入单元格,然后检查其值是否更改。

正如Doug Excel所说的,只是创build一个默认标题名称“Column1”。

如果你想读取列标题,你可以使用下面的代码。

 Sub sample() Dim tbl As Object Set tbl = Sheets("sheet1").ListObjects("Table1") MsgBox Trim(tbl.ListRows(1).Range.Cells(0, 1)) End Sub 

我们解决这个解决scheme。 工作簿上的某个位置插入一列ListObject(aka表),将标题留空。 给这个头名称emptyHeader

使用下面的函数,你现在可以检查一个给定的范围是否真的是空的,这是有空的单元格值或ListObject自动设置为空头的值。

解决scheme并不完美。 如果用户将第二列的标题值设置为Column42(英文),则该函数将错误地返回true。

 Function isRealyEmpty(ra As Range) As Boolean If IsEmpty(ra.Value) Then isRealyEmpty= True Exit Function End If ' The value of the empty reference header emptyHeaderValue = ThisWorkbook.Names.Item("emptyHeader").RefersToRange.Value l = Len(emptyHeaderValue) - 1 targetValue = ra.Value If Left(emptyHeaderValue, l) = Left(targetValue, l) Then postFix = Right(targetValue, Len(targetValue) - l) isRealyEmpty= IsNumeric(postFix) Else isRealyEmpty= False End If End Function 

这是一个简单的方法来testing一个单元格是否真的是空的。 我们testing原始值是否等于已清除的单元格的值。

这个解决scheme的缺点是我们必须修改工作簿,这在我们的案例中是不可接受的。

 Function isRealyRealyEmpty(ra As Range) As Boolean v = ra.Formula ra.Formula = "" isRealyRealyEmpty = (ra.Formula = v) ra.Formula = v End Function