
No.3ベストアンサー
- 回答日時:
#2 です。
ついでに補足を。実務的には、データのある最終行とか最終セルがほしいことがほとんど
ですよね。SpecialCells(xlLastCell) でも UsedRange でもその動作仕様
を理解している場合は問題なく使えますが、こんな方法が最も確実だった
りします。
Sub Sample2()
Dim r As Range
Set r = FindLastCell(ActiveSheet)
MsgBox r.Address
End Sub
' // シート内の最終データセルを求める(最後のセルではない)
Public Function FindLastCell(ByVal Sh As Worksheet) As Range
Dim lRow As Long, lCol As Long
On Error GoTo Err_
lRow = Sh.Cells.Find(What:="*", _
LookIn:=xlValues, _
SearchDirection:=xlPrevious, _
SearchOrder:=xlByRows).Row
lCol = Sh.Cells.Find(What:="*", _
SearchDirection:=xlPrevious, _
SearchOrder:=xlByColumns).Column
Set FindLastCell = Sh.Cells(lRow, lCol)
Bye_:
Exit Function
Err_:
' // case no data in the worksheet.
Set FindLastCell = Sh.Cells(1, 1)
Resume Bye_
End Function
No.5
- 回答日時:
Excel で最終行の取得方法は複数あります。
下のサイトで検証されています。すべてを試されてはいかがでしょうか。
ノーツ/ドミノ パワーアップガイド (toru's page) - No.8 ワークシートの最終行、最終列を取得する
http://www.niji.or.jp/home/toru/notes/8.html
No.4
- 回答日時:
ActiveSheet.Cells.SpecialCells(xlLastCell).Row
の仕様上の問題です。まぁバグと言ってしまえばそうなんですが、最早そういう仕様という認識をされた方がよいかと。VBAのサンプルサイトでもその方法を推奨しているところはあまり見かけたことはありません。あったとしても下記のようにちゃんと注意点が書かれていたりします。
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
対策としてはFAQサイトでサンプルとしてよく挙げられている方法を使うべきかと。
例えば下記とか。
ActiveSheet.Range("$A$65536").End(xlUp).Address
No.2
- 回答日時:
こんにちは。
ダミーで良いから一度 UsedRange を使うと最終セルが補正されます。
こんな感じ。
Sub Sample()
Dim lDummy As Long
lDummy = ActiveSheet.UsedRange.Row
MsgBox ActiveSheet.Cells.SpecialCells(xlLastCell).Row
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
-
4
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
5
VBA 数式を残して値をクリアについて
Excel(エクセル)
-
6
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
7
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
8
【Excel】 csvの作成時、空白セルにもカンマ
Excel(エクセル)
-
9
条件付き書式のコピーについて(参照先も自動で変更したい)
Excel(エクセル)
-
10
Excel VBAで、実行時にsheet上のコマンドボタンのCaptionを変更する。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA セルの値がおかしいです
-
VBA セル間のリンク修正につい...
-
【マクロ】並び替えの範囲が、...
-
vba textboxへの入力について教...
-
ワードの図形にマクロを登録で...
-
エクエルのVBAコードについて教...
-
複数のExcelファイルをマージす...
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
Excel VBA 選択範囲の罫線色の...
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】開いているブックの...
-
えくせるのVBAコードについて教...
-
VBAの「To」という語句について
-
VB.net 文字列から日付型へ変更...
-
【ExcelVBA】5万行以上のデー...
-
VBA ユーザーフォーム ボタンク...
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA セル間のリンク修正につい...
-
VBAでCOPYを繰り返すと、処理が...
-
vba textboxへの入力について教...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
Vba Array関数について教えてく...
-
Vba セルの4辺について罫線が有...
-
【マクロ】開いているブックの...
-
複数のExcelファイルをマージす...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【ExcelVBA】5万行以上のデー...
-
vbsでのwebフォームへの入力制限?
-
[VB.net] ボタン(Flat)のEnable...
-
Excelのマクロについて教えてく...
-
【ExcelVBA】値を変更しながら...
-
改行文字「vbCrLf」とは
-
算術演算子「¥」の意味について
-
VBAでセルの書式を変えずに文字...
-
VBAの「To」という語句について
-
VB.net 文字列から日付型へ変更...
おすすめ情報