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