|
こんにちは。かみちゃん です。
>宣言はLong型ですれば安全なのですね。
安全というか、その変数に格納される最大値が何かをよく考えて、使う必要があります。
ただ、neputuneさんもおっしゃっていますが、
> 後、VBでInteger型を使うメリットはありません。最近のパソコンは
> 32bitか64bitですから最低でもそのメモリは消費しますから。ですから、
> VBではintegerよりlongの方が無駄な変換がないだけ効率的
というのは、私もそう思います。
>ところで、現象としては、
>For j = kiten2.Row + 1 To objsheet.Rows.Count
>だとデータの最終行ではなく、シートの最終行(65536行目)を検知しているようです。
検知ではなく、objsheet.Rows.Count は、Excelシートの最大行を取得します。
Excel2003までは、常に65536です。
objsheet.Rows.Count
と
Range("A65536").End(xlUp).Row
は、まったく違います。
>>Range("A65536").End(xlUp).Row
>>は、A列の値が入っている最終行
>ということは、A列だけしか見ないので、まずいですよね。
>
>For j = kiten2.Row + 1 To objsheet.Cells(Rows.Count, 1).End(xlUp).Row
>ネットで調べて上記のようにやってみたら、422行目(最終行)を検知しました。
objsheet.Cells(Rows.Count, 1).End(xlUp).Row
は、objsheetのRows.Count行目の1列目(つまりA65536セル)から上方向に、値が
入っているセルの行を返します。
つまり、Excel2003までの場合は、
objsheet.Range("A65536").End(xlUp).Row
と同じです。
|
|