1

私は、それぞれが異なる要素に対して5つの列を含むExcelファイルを使用しています。列のコレクションを作成しようとしました。そのコレクションの各要素には、各列の行からのデータが含まれます。私は次のような配列から始めました:

Dim Column(1 To 5) As ColumnsInFile
    Column(1) = Worksheets("Sheet1").Range("B2", Range("B2").End(xlDown))
    Column(2) = Worksheets("Sheet2").Range("C2", Range("C2").End(xlDown))
    Column(3) = Worksheets("Sheet3").Range("D2", Range("D2").End(xlDown))
    Column(4) = Worksheets("Sheet4").Range("E2", Range("E2").End(xlDown))
    Column(5) = Worksheets("Sheet5").Range("F2", Range("F2").End(xlDown))

後で、各列の内容に対して関数を 1 つずつ実行したいと思います。

私の問題は、これらすべてに対してより単純なコードを作成できるように思われることです-さらに、そのコードは機能せず、何かが定義されていないことを教えてくれます。

各列をループして、コードがループを介してコンテンツを取得するようにするにはどうすればよいですか? B2 を定義する代わりに、最初の列から始まり、次の列に移動し、次の列に移動する、より一般的なもの..原因、問題は、400 列があった場合..それを定義することはできませんでしたその方法..それは長すぎるだろう..

4

1 に答える 1

0

変数を定義するには、使用する必要がvariantあり、名前columnは範囲のプロパティであり、名前として使用しないでください。

dim cols() as variant, lastrow as long, lastcol as long 

'find last row and column 
lastrow = cells.find("*", range("A1"), , , xlbyrows, xlprevious).row
lastcol = cells.find("*", range("A1"), , , xlbycolumns, xlprevious).column 

'define your columns
cols = range("A2").resize(lastrow - 1, lastcol)

dim c as long, R as Long 
'cycle through columns
for C = 1 To ubound(cols, 2) ' second dimension is columns

    'cycle through rows
    for R = 1 to ubound(cols, 1) ' first array dimension is rows.

        'do somthing with columns and rows
        debug.print cols(R, C)

    next R
next C 

もっと読む。

于 2013-04-07T05:18:48.343 に答える