4

これは単純なはずですが、私は VBA 初心者です。多くのフォーラムを読みましたが、自分のアプリケーションに適合するように解読できない、非常に複雑なコードしか見つかりませんでした。

Excel 2007 では、テーブルが既に定義されています。私はフォーラムに不慣れなため、写真を投稿できませんが、テーブルには 3 つの列があり、1 から 3 までの名前のヘッダー行と、以下に大まかに示すように 1 つのデータ行があります。

Table1
+------+------+-------+
|1     |  2   |   3   |
+------+------+-------+
|Alpha |Bravo |Charlie|
+------+------+-------+

この単純なテーブルを使用すると、次のように動作し、テキスト "Alpha" が返されます。

Sub works()

    Dim item As String

    Sheets("Sheet1").Select
    item = ActiveSheet.Range("Table1[1]")
    MsgBox (item)

End Sub

しかし、調整可能な変数を使用してテーブルの列ヘッダーを参照できるようにしたいと考えています。これが機能しない理由:

Sub doesntwork()

    Dim item As String
    Dim i As String

    i = 1
    Sheets("Sheet1").Select
    item = ActiveSheet.Range("Table1[i]")
    MsgBox (item)

End Sub

それは構文の問題に違いありませんが、過去 10 年以上の VBA 構文のさまざまな反復をすべて整理することができません...

助けてください!ありがとう。

4

3 に答える 3

5

構造化されたテーブルのヘッダーを参照する場合、ヘッダーを含む範囲への参照が取得されます。

Dim rng as Range    
Set rng = Activesheet.Range("Table1[#Headers]")

...そして、特定のヘッダーを位置で参照したい場合:

Dim rngHdr2    
Set rngHdr2 = rng.Cells(2) '2nd header cell
于 2012-07-19T21:26:05.983 に答える
2

テーブル名を文字列として構築するには、連結を使用する必要があります。

item = ActiveSheet.Range("Table1[" & i & "]") 
于 2012-07-19T21:06:59.643 に答える
0

両方の答えを組み合わせる

サブデモ()

Dim rng As Range
Dim celda As Range
Dim nroTabla As Integer
Dim nroFila  As Integer
Dim nroCol   As Integer

nroTabla = 1
nroFila = 2
nroCol = 3

Set rng = ActiveSheet.Range("Tabla" & nroTabla & "[#Headers]")
Set celda = rng.Cells(nroFila, nroCol)

celda.Value = 700

サブ終了

于 2014-04-23T11:18:39.410 に答える