2016-05-10 9 views
0

私はVBAをかなり新しくしています。私の目標を達成するためにこのウェブサイトの助けを借りてコードをハッキングしていますが、通常はそれほど美味しくありません。しかし、以下は非常に頻繁に現れ、私はあなたが私を助けることができる目標を達成するためのより簡単な方法があることを願っています。Excel VBAリファレンスListObject変数を使用

私はSQLデータベースを照会することによって生成されたExcelのテーブルを持っているので、私はのは、言わせての列タイトルを持つテーブルA、B、C、D、E

私がしたいで終わりますユーザーの選択に基づいてVBAで配列を作成します。たとえば、セルA1にAがある場合、配列には列Aのデータが格納されます。セルA1にBがある場合、配列には列Bのデータが格納されます。私はAの周りに「」投げる場合Listcolumn に参照として文字列変数Aを使用しようとするライン上のエラーを

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 

が、取得:私は現在、次のコードを使用しようとしています

それは動作しますが、それは変数ではありません。私はそれぞれのオプションのためにケースを使用して私が望むものを達成することができますが、私はそれをより合理化したいと思います。そのためにワークシートなどのListObjectを参照する変数を使用する方法はありますか?

+0

  • 無効にされますX軸オブジェクトを利用した
  • 範囲
  • 使用Setキーワードとして既に

コード構築:変更が含まあなたのコードに何か問題がありますが、最後の行で 'lo'を使うべきです。 SQL TableのA1の値が列の名前であることを確認してください。実際のエラーとは何ですか? – Rory

+0

こんにちは、こんにちは、そのコメントありがとうございます。私は戻って、私は私の質問でそれを言ったことはないことに気づいたが、A1の値は実際に別のシートにあった。しかし、コードでは、私はまだA1に値を持たないSQLテーブルシート上にあった。私は、 'Set WS = Worksheets( "Sheet6")'を追加しました。ここで、A1値は実際に 'Dim A'の後にあって、今はすべて動作します。あなたの助力の見直しに感謝します。 – Carbon60

答えて

1

は、以下のことを試してみてください助けを事前にありがとうございます。実際にはありません

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 
+0

お返事ありがとうございます。それは完全に動作し、Xaxisをバリアントではなく範囲に設定するというアイデアが気に入っています。助けてくれてありがとう。 – Carbon60

関連する問題