Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1917 / 13645 ツリー ←次へ | 前へ→

【71043】特定の列範囲の最終行 レッズ命 12/1/27(金) 0:43 質問[未読]
【71048】Re:特定の列範囲の最終行 UO3 12/1/27(金) 9:38 発言[未読]
【71051】Re:特定の列範囲の最終行 レッズ命 12/1/27(金) 9:53 お礼[未読]

【71043】特定の列範囲の最終行
質問  レッズ命  - 12/1/27(金) 0:43 -

引用なし
パスワード
   いつもお世話になっております。
A列からH列の範囲で、最終行を調べたいのですが、
Range("A:H").SpecialCells(xlCellTypeLastCell)
としても、正しい答えが返ってきません。
いろいろ調べてみたのですが、
見つからないので、教えてください。

Excel2007を使用しています。

ちなみにA列からH列までそれぞれの列の最終行は違います。
その列範囲の本当の最終行が知りたいです。

よろしくお願いいたします。

【71048】Re:特定の列範囲の最終行
発言  UO3  - 12/1/27(金) 9:38 -

引用なし
パスワード
   ▼レッズ命 さん:

ヘルプでも明確に記述されていないのですが、結論としては
特定領域.SpecialCells(xlCellTypeLastCell) と記述しても、これはその、特定領域内のセルではなく、
記述されたセルが存在するシート上のセル全てが対象になります。
以下は、その確認プロシジャです。

Sub Test()
  Cells.Clear
  Range("C5").Value = "ABC"
  MsgBox Range("A1:A2").SpecialCells(xlCellTypeLastCell).Address
End Sub

ですから、特定の列の範囲に絞った最終行は、たとえば以下のように地道にループさせて
取得するしかないのでは?

Sub Sample()
  Dim n(1 To 8)
  Dim i As Long
  
  For i = 1 To 8 'A-H
    n(i) = Cells(Rows.Count, i).End(xlUp).Row
  Next
  
  MsgBox "最終行は" & WorksheetFunction.Max(n) & "です"
  
End Sub

【71051】Re:特定の列範囲の最終行
お礼  レッズ命  - 12/1/27(金) 9:53 -

引用なし
パスワード
   ▼UO3 さん:

そうなのですね、
SpecialCells(xlCellTypeLastCell)について
よく理解できていませんでした。
すみません・・・。

下記でうまくいきました。
ご回答ありがとうございました。

>
>Sub Sample()
>  Dim n(1 To 8)
>  Dim i As Long
>  
>  For i = 1 To 8 'A-H
>    n(i) = Cells(Rows.Count, i).End(xlUp).Row
>  Next
>  
>  MsgBox "最終行は" & WorksheetFunction.Max(n) & "です"
>  
>End Sub

1917 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free