17

現在、ヘッダー付きのテーブルとしてフォーマットされたデータセットに取り組んでいます。私がする必要があるのは、特定の列のすべてのセルを循環して内容を変更することです。MSDN の調査を通じて、次の for ループを思いつきました

for i = 1 to NumRows
    Cells(i,23).Value = "PHEV"
next i

したがって、これにより、列 23 のすべてのセルが「PHEV」に変更されます。ただし、自分で作業しているテーブルを作成していないため、関心のある列が列 23 になるとは限りません。

次のようなものを実装したいと思います。

for i = 1 to NumRows
    Cells(i,[@[columnHeader]]).Value = "PHEV"
next i

もちろん、その構文が正しくないことはわかっていますが、私の目標を十分に示していることを願っています。

4

10 に答える 10

30

これが実際にListObjectテーブルである場合 (リボンからテーブルを挿入)、テーブルの.DataBodyRangeオブジェクトを使用して行と列の数を取得できます。これはヘッダー行を無視します。

Sub TableTest()

Dim tbl As ListObject
Dim tRows As Long
Dim tCols As Long

Set tbl = ActiveSheet.ListObjects("Table1")  '## modify to your table name.

With tbl.DataBodyRange
    tRows = .Rows.Count
    tCols = .Columns.Count
End With

MsgBox tbl.Name & " contains " & tRows & " rows and " & tCols & " columns.", vbInformation

End Sub

ヘッダー行を使用する必要がある場合は、使用するtbl.DataBodyRangeだけではなくtbl.Range.

于 2013-07-10T15:55:09.413 に答える
1

私は同じ問題に遭遇しましたが、フォーラムは私を助けることができませんでした.数分後に私はアイデアを思いつきました:

match(ColumnHeader,Table1[#Headers],0)

これにより、番号が返されます。

于 2015-09-02T07:50:27.390 に答える