Excel 如何使用字符串指定工作表变量

Excel 如何使用字符串指定工作表变量,excel,vba,Excel,Vba,我有一个包含报表数据源列表的表,包括服务器名称、表、字段、groupby等。。。然后,我可以通过切片器选择要刷新的条目并点击REFFRESH。 其中一列有数据应该放在哪里的表的名称,只是一个基本字符串。如何将其分配给工作表变量 当使用以下命令时,我得到类型不匹配。x只是一个循环的一部分,该循环检查表中的每一行,以查看它是否被选中 dim oLo As ListObject, cTab As Worksheet Set cTab = wb.Sheets(oLo.DataBodyRange.Cell

我有一个包含报表数据源列表的表,包括服务器名称、表、字段、groupby等。。。然后,我可以通过切片器选择要刷新的条目并点击REFFRESH。 其中一列有数据应该放在哪里的表的名称,只是一个基本字符串。如何将其分配给工作表变量

当使用以下命令时,我得到类型不匹配。x只是一个循环的一部分,该循环检查表中的每一行,以查看它是否被选中

dim oLo As ListObject, cTab As Worksheet
Set cTab = wb.Sheets(oLo.DataBodyRange.Cells(x, 10))

有什么想法吗?

我花了5分钟写这个问题,然后我得到了灵感。我只需要在变量/单元格引用之前/之后添加一个&和&即可

Set wb = ThisWorkbook
Set ws = wb.Sheets("ADMIN")
Set oLo = ws.ListObjects(1)    

For x = 1 To rCNT
    'Trigger update for each visible row
    If oLo.DataBodyRange.Rows(x).Hidden = False Then
        cFields = oLo.DataBodyRange.Cells(x, 7)
        cTable = oLo.DataBodyRange.Cells(x, 6)
        cCriteria = oLo.DataBodyRange.Cells(x, 8)
        cGroup = oLo.DataBodyRange.Cells(x, 9)
        Set cTab = wb.Sheets(oLo.DataBodyRange.Cells(x, 10).Value)
        Set cRng = cTab.Range(oLo.DataBodyRange.Cells(x, 11))
        ' - Call to function that refreshes the data
        ' - TBC
        ' - -------------------------------------
    End If
Next x

看起来您没有对您的oLo对象变量进行任何赋值。如果该变量为空,那么这里可能会出现错误……单元格引用很好,我已经找到了解决方案。谢谢你的回复,真的吗?这看起来一点帮助都没有。。。不过这是一个很酷的解决方案!如果只执行&oLo.DataBodyRange.Cellsx,10,而不执行最后一个concat,会发生什么?我敢打赌,这会将值强制为字符串,从而使Sheets对象感到高兴。与其使用,您可能只需执行oLo.DataBodyRange.Cellsx、10.value或CstroLo.DataBodyRange.Cellsx,10.Value。这看起来像是一个空字符串连接的例子,而不是一个神奇的例子——在这种情况下,简单地将CStr中的原始语句包装成一个字符串也可以做同样的事情。@DavidZemens您是对的。只要使用.Value就可以解决这个问题。当然,总是这样直言不讳是一种很好的做法;看起来你们都是对的,而且这里整洁多了。Thnx