Excel VBA参考ListObject与variables

我对VBA相当陌生,并且在这个网站的帮助下一起黑客代码来完成我的目标,但通常并不漂亮。 然而,下面出现相当频繁,我希望有一个更简单的方法来完成您可以帮助我的目标。

我在Excel中有一个通过查询SQL数据库生成的表格,所以我最终得到一个列表标题为A,B,C,D,E

我想根据用户的select在VBA中填充一个数组。 例如,如果单元格A1中有A,则数组将填充来自列A的数据。如果单元格A1中包含B,则数组将填充来自列B的数据,依此类推。

我目前正在尝试使用下面的代码:

Sub Compare() Dim WS As Worksheet Dim lo As ListObject Dim Xaxis As Variant Set WS = Worksheets("SQL Table") 'sheet that has SQL generated table Set lo = WS.ListObjects("Table") 'Table is the name of the table Dim A As String A = WS.Range("A1").Value 'A1 in this case has the value A in it Xaxis = Worksheets("SQL Table").ListObjects("Table").ListColumns(A).DataBodyRange End Sub 

但是在尝试使用stringvariablesA作为Listcolumn中的引用的行上得到一个错误如果我抛出“A”它可以工作,但它不是一个variables。 我可以通过使用Case来实现我想要的每个提供选项,但是我想使其更加简化。 有没有一种方法,我可以使用一个variables引用Listobject,对于这个问题,工作表等?

预先感谢您的帮助

尝试以下。 变化包括:

  • 昏暗的Xaxis作为范围
  • 使用设置关键字
  • 利用了已经构build的对象

代码

 Sub Compare() Dim WS As Worksheet Dim lo As ListObject Dim Xaxis As Range Set WS = Worksheets("SQL Table") 'sheet that has SQL generated table Set lo = WS.ListObjects("Table") 'Table is the name of the table Dim A As String A = WS.Range("A1").Value 'A1 in this case has the value A in it Set Xaxis = lo.ListColumns(A).DataBodyRange End Sub