Excel VBA質問箱 IV

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

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


12331 / 76734 ←次へ | 前へ→

【69929】Re:マクロエラー
発言  n  - 11/9/24(土) 19:46 -

引用なし
パスワード
   >MaxRow = ActiveSheet.UsedRange.Rows(.Rows.Count).Row
.Rows.Countの『.』の前が指定されていませんからエラーになっています。
MaxRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
としなければいけません。

そこでActiveSheet.UsedRangeを何度も指定せずに、Withステートメントでくくって
With ActiveSheet.UsedRange
  MaxRow = .Rows(.Rows.Count).Row
End With
と書くわけです。

>rowsとrowの違い..
rowsはrowの複数形ですね。
Rows(1).Row でRowsの1行目の行番号を取得します。
Rows(n).Row でRowsのn行目。

目的が、UsedRangeの最下行の行番号を取得したいのだから
Rows(n).Row このnはRowsの行の数を指定すれば良い事になります。

Sub test()
  Sheets.Add.Range("A5:A10").Value = 1

  With ActiveSheet.UsedRange
    MsgBox ".UsedRange.Address= " & .Address
    MsgBox ".UsedRange.Rows(1).Row= " & .Rows(1).Row
    MsgBox ".UsedRange.Rows.Count= " & .Rows.Count
    MsgBox ".UsedRange.Rows(.Rows.Count).Row= " & .Rows(.Rows.Count).Row
  End With
End Sub
こんなサンプルだったら理解できるでしょうか?


ちなみに、UsedRangeは必ず1行目から始まるとも限りません。
提示コードはちょっと危ういところもありますから更に検討してみてください。
5 hits

【69928】マクロエラー free 11/9/24(土) 17:53 質問
【69929】Re:マクロエラー n 11/9/24(土) 19:46 発言
【69930】Re:マクロエラー free 11/9/24(土) 20:20 お礼
【69931】Re:マクロエラー n 11/9/24(土) 20:43 発言
【69932】Re:マクロエラー free 11/9/24(土) 21:38 お礼

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