返回表范围地址与原始风格
我有一个范围,定义如下:
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]
返回tblInsRep[#all]
string:
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
我的工作表的屏幕截图 :
请试试这个:
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")
我不确定你想要达到什么效果,或者你的最终目标是什么,因为这太长了,所以我把它放在这里(我将在稍后删除它)。
你有什么(根据你的屏幕截图)是一个VBA对象,作为ListObject
。
如果你想用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
我不确定用"tblInsRep[#all]"
获取String
的目的是什么。
让我知道你打算怎么做,也许我们可以find一个更好的解决scheme。