如何测试Excel(版本> = 2010)ListObject标头是否为空?
如果我选择了这样的空标题,那么
?selection.value -> Column1 (or Spalte1, depending on client language)
?isEmpty(selection) -> false
就VBA而言,它的行为就像一个非空单元格。
非解决方案:写入单元格,然后检查其值是否已更改。
答案 0 :(得分:1)
正如Doug Excel所说,只创建一个默认的标题名称“Column1”。
如果您想阅读列标题,可以使用以下代码。
Sub sample()
Dim tbl As Object
Set tbl = Sheets("sheet1").ListObjects("Table1")
MsgBox Trim(tbl.ListRows(1).Range.Cells(0, 1))
End Sub
答案 1 :(得分:0)
我们选择了这个解决方案。在工作簿的某处插入一个ListObject(aka表),其中包含一列,标题为空。将此标题命名为 emptyHeader 。
使用下面的函数,您现在可以检查给定范围是否为空,即具有空单元格值或ListObject为空标题自动设置的值。
解决方案并不完美。如果用户将第二列的标题值设置为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
答案 2 :(得分:0)
这是一种傻瓜式的方法来测试一个单元格是否真的是空的。 我们测试原始值是否等于已清除单元格的值。
此解决方案的缺点是我们必须修改工作簿,这在我们的案例中是不可接受的。
Function isRealyRealyEmpty(ra As Range) As Boolean
v = ra.Formula
ra.Formula = ""
isRealyRealyEmpty = (ra.Formula = v)
ra.Formula = v
End Function