ここから本文です

解決済みの質問

■Excel2003-[VBA]-使用セルの最終行の行数を抽出する方法

yasukiyonetさん

■Excel2003-[VBA]-使用セルの最終行の行数を抽出する方法

例題::::::::::::::::::::::
インデックス番号1のシートの
使用セルの最終行の行数を
イミディエイトウィンドウに書出しなさい。

一例:
D10に何か文字を入力した場合→10
その後、AA100に数式を入力→100を抽出。
::::::::::::::::::::::::::

私の解は下記のようになりました。
''''''''''''''
Sub test()
Dim i As Integer
Dim erow As Long

With ThisWorkbook.Worksheets(1)
For i = 1 To .Columns.Count
If erow < .Cells(Rows.Count, i).End(xlUp).Row Then
erow = .Cells(Rows.Count, i).End(xlUp).Row
End If
Next
End With

Debug.Print erow
End Sub
''''''''''''''

もっとシンプルにできるんじゃないかと
思い調べてみたのですが見当たりません。
基本的なことなのかもしれませんが、
ご存知の方、お手すきの時で構いませんのでご教示お願い致します。

--------------------------------------------------
【追記】~今回の質問に至った理由~
下記URLの質問で本題はクリアできたと思うのですが・・・
エラー処理を考えていた際、今回の壁にぶつかりました。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1219756917

補足
みなさま、回答有難うございます。

UsedRange プロパティ
http://msdn.microsoft.com/ja-jp/library/cc362327.aspx

備忘録:
ActiveSheet.UsedRange.Select
を実行するとすぐ理解できると思われます。

【UsedRangeプロパティの活用方法】
シートで簡易データベース
http://home.att.ne.jp/zeta/gen/excel/c03p04.htm

違反報告

ベストアンサーに選ばれた回答

gekkasuikouさん

シンプルに考えてみました。

Sub test2()
Debug.Print ThisWorkbook.Worksheets(1).UsedRange.Rows.Count
End Sub

訂正

hirosukesueさん の回答を見て気付きましたが、A1セルが使われている場合には上記でもいいのですが、途中のセルから使われているときはうまくないですね。失礼しました。
私の案を修正しておきます。

Sub test3()
Debug.Print ThisWorkbook.Worksheets(1).UsedRange.SpecialCells(xlLastCell).Row
End Sub

  • 違反報告
  • 編集日時:2008/10/11 09:56:52
  • 回答日時:2008/10/10 23:57:14

質問した人からのコメント

  • 降参どちらの回答をBAにすべきか迷いましたが、
    gekkasuikouさんのtest3が
    質問の要望に一番沿っていると判断させて頂きました。

    有難うございます。

    【補足】
    hirosukesueさん の回答も今後の参考に
    させて頂きたいと思います。
    現在With Sheet1.UsedRange
    の「Sheet1」が解読できないものでして、

    ThisWorkbook.Worksheets(1)
    でもないし
    ThisWorkbook.Sheets(1)
    でもない・・・
  • コメント日時:2008/10/11 15:03:16

グレード

この質問・回答は役に立ちましたか?
役に立った!

お役立ち度:お役立ち度 4点(5点満点中)5人が役に立つと評価しています。

ベストアンサー以外の回答

(1件中1〜1件)

 

hirosukesueさん

いろいろあると思いますが私は次の方法で取得しています

Dim myColum As Long
Dim myRow As Long

With Sheet1.UsedRange
myColum = .Column + .Columns.Count - 1
myRow = .Row + .Rows.Count - 1
End With
Debug.Print "行= " & myRow & " 列= " & myColum

あなたにおすすめの解決済みの質問

Excelの構文について質問です。 オートフィルタで条件を絞り込んだ後、コマンドボタンでデータを抽出して別シートにコピーという構文を作ったのですが、その別シートにコピーした後、貼り付けたデータの一番下の列に各行の値の合...
シート内のF列を見ていき、「該当なし」と入力されていたら、そこの行のA列からH列までをコピーして 該当なしシートに貼り付けていきたいのですが・・・ For i = 3 To Cells(Rows.Count, 6).End(xlUp).Ro
エクセルvbaで変数を使って範囲指定をしたいのですが上手くいきません、どなたか教えてください。 A列~B列まではデータが入っています。 C列の入力済の下の行(下表※1)から B列の最終行の右のセル(下表※2)までを範囲指定...
PR
知恵ノートとは?

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。

お客様自身の責任と判断で、ご利用ください。

話題のキーワード

[カテゴリ:Office系(Word、Excel)]

ただいまの回答者

09時35分現在

2316
人が回答!!

1時間以内に4,066件の回答が寄せられています。

>>回答ひろばに行く


知恵コレに追加する

閉じる

知恵コレクションをするID/ニックネームを選択し、「追加する」ボタンを押してください。
※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する