[リストへもどる]
一括表示

投稿時間:2002/12/24(Tue) 21:03
投稿者名:New16
URL :
タイトル:
ExcelのUsedRangeについて
はじめまして。
いつも参考にさせていただいています。

以下のようなExcelの使用範囲を取得する関数を作成しているのですが、
UsedRangeで最終行が正確に取得できない場合があります。

>>>>>>>>>>>>>>>>>>>>
Public Function GetDataRange(wks As Worksheet) As Boolean

Dim rng As Range

On Error GoTo ErrorHandler
    
    GetDataRange = False
    
    Set rng = wks.UsedRange

    MaxRow = rng.Rows.Count
    MaxCol = rng.Columns.Count
    MinRow = 1
    MinCol = 1
    
    If Not rng Is Nothing Then Set rng = Nothing
    GetDataRange = True
    Exit Function

ErrorHandler:
    If Not rng Is Nothing Then Set rng = Nothing

End Function
<<<<<<<<<<<<<<<<<<<<

通常は、「rng.Rows.Count」で最終行を正確に取得できるのですが、
中に取得できないケースがあります。
例えば、
10行目までしかデータが入力されていないのに、
rng.Rows.Countでは1104行が取得される
(1104行目には何も入力されていません)
といった現象です。

原因がわかる方御教示ください。

投稿時間:2002/12/24(Tue) 21:27
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: ExcelのUsedRangeについて
> 10行目までしかデータが入力されていないのに、
> rng.Rows.Countでは1104行が取得される
> (1104行目には何も入力されていません)
> といった現象です。

1104行目のいずれかのセルに対して、何かしらの設定が行われていないか、確認してみてください。
(例えば、表示形式を[標準]から[文字列]にしているとか、文字色を変更しているとか)

セルに対して、何かしらの設定が書き込まれていた場合、たとえデータ自体は
入力されていなかったとしても、UsedRangeの対象となります。