我有一个范围,定义如下:
Call Test (Range("tblInsRep[#all]"))
Sub Test (rngSRange As Range)
.
.
.
End Sub
我需要分析上面的地址(tblInsRep[#all]
)以定义给定的表地址是否包含Header,使用此代码:(如果rngSRange
声明为String
参数)
Call Test ("tblInsRep[#all]")
Sub Test (strSRange As String)
Dim rngSRange As Range
Dim HControl As Boolean 'Header Control
Set rngSRange = Range(srtSRange)
HControl = IIf(InStr(1, strSRange, "[#All]") > 0, True, False)
.
.
.
End Sub
因此,我想对Test
子例程使用第一种方法,因为它更干净简洁。
如何从下面的tblInsRep[#all]
返回rngSRange
字符串:
Call Test(Range("tblInsRep[#all]"))
通话:
Sub Test (rngSRange As Range)
Dim HControl As Boolean 'Header Control
Dim strSRange As String
strSRange=...(rngSRange)
HControl = IIf(InStr(1, strSRange, "[#All]") > 0, True, False)
.
.
End Sub
我的工作表表格的屏幕截图:
答案 0 :(得分:1)
我不确定你想要实现的目标,或者你的最终目标,这个太长了,不能作为一个冷却,所以我把它放在这里(我将在以后删除)。
你所拥有的(根据你的屏幕截图)是一个被称为ListObject
的VBA对象。
如果要使用VBA定义表,可以使用以下代码:
Dim Tbl As ListObject
Dim strSRange As String
' set the ListObject Table
Set Tbl = ThisWorkbook.Worksheets("Sheet1").ListObjects("tblInsRep")
strSRange = Tbl.Range.Address ' <-- this gets the address of the entire Table's range
我不确定使用String
获取"tblInsRep[#all]"
的目的是什么。
让我知道你打算用它做什么,也许我们可以找到更好的解决方案。
答案 1 :(得分:1)
请试试这个:
Public Function test(rngSRange As Range, tablename As string)
Dim strSRange As String, checktbl As String
checktbl = ActiveSheet.ListObjects(tablename).HeaderRowRange.Address
strSRange = rngSRange.Address
test = IIf(InStr(1, strSRange, checktbl), True, False)
End Function
转到您的工作表并撰写例如:test(J4:J5;"Table3")