返回表范围地址与原始风格

我有一个范围,定义如下:

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。