|
▼Machiko さん:
おはようございます。
>最終行の取得はよくテーマになり、回答がいっぱいあるようですが。
>自分なりに、色々なケースを書いたりしていますが・・・
>こんなのはだめでしょうか?
>With Sheets("Sheet1").Cells
> MsgBox .SpecialCells(11).Rows.Row
>End With
駄目ではないですよ!!
ただ、最後のセルの行位置を求めるだけなら、
刀火さんが記述された
.SpecialCells(11).Row
↑で取得できますよね!!
今回の刀火さんの質問は、この.SpecialCells(11)
(.SpecialCells(xlLastCell))のバグのような現象についての投稿だったのです。
新規ブックの標準モジュールに
'=============================================================
Sub test()
With ActiveSheet
.Range("a1:k30").Value = 1
MsgBox ".cells.SpecialCells(11).Rows.Row = " & _
.Cells.SpecialCells(11).Rows.Row & _
" <--- Machikoさんのコード" & vbCrLf & vbCrLf & _
".cells.SpecialCells(xlLastCell).Row = " & _
.Cells.SpecialCells(xlLastCell).Row & _
" <---刀火さんのコード" & vbCrLf & vbCrLf & _
".UsedRange.SpecialCells(xlLastCell).Row = " & _
.UsedRange.SpecialCells(xlLastCell).Row & _
" <--- ichinose" & vbCrLf & vbCrLf & _
"と全て同じ値を返しますが・・・、"
.Range("a23:j30,k1:k30").ClearContents
MsgBox "a23:j30とk1:k30のセル範囲の値をクリアした状態で同じことを行うと・・"
MsgBox ".cells.SpecialCells(11).Rows.Row = " & _
.Cells.SpecialCells(11).Rows.Row & _
" <--- Machikoさんのコード" & vbCrLf & vbCrLf & _
".cells.SpecialCells(xlLastCell).Row = " & _
.Cells.SpecialCells(xlLastCell).Row & _
" <---刀火さんのコード" & vbCrLf & vbCrLf & _
".UsedRange.SpecialCells(xlLastCell).Row = " & _
.UsedRange.SpecialCells(xlLastCell).Row & _
" <--- ichinose" & vbCrLf & vbCrLf & _
"という結果の違いを問題にしています"
End With
End Sub
上記のコードを実行した結果を検討してしてみてください。
|
|