送信元:https : //www.cnblogs.com/acetaohai123/p/6505447.html
VBAはEXCELテーブルの行と列の数を取得します
「Columus = ActiveSheet.UsedRange.Columns.Count」のように、Columusなどのキーワードを変数として使用しないように注意してください。
初心者向けEXCELマクロの子供用の靴は、特に行と列の数が不明な場合、常にテーブルの行と列の数を知りたいと思っています。これにより、多くのミスを回避し、効率を向上させることができます。しかし、インターネットを検索するためにそれを使用するたびに、私は常に多くの役に立たない答えを出し、私が望む結果を見つけることができないことがよくあります。使用するたびに、一時的な検索は常に頭痛の種です。さまざまな方法を詳細に記録したブログを偶然見つけましたが、著者はいくつかの調査結果をテストしましたが、それは本当に役に立ちました。長いライブ共有の精神で、ブログのコンテンツを共有します。皆さんのお役に立てば幸いです。
出典:http://www.okexcel.com.cn/bbs/viewthread.php?tid=26
注:それぞれの方法で、上部はExcelの行数、下部はExcelの列数です。
方法1:
ActiveSheet.UsedRange.Rows.Count
ActiveSheet.UsedRange.Columns.Count
短所:場合によっては実際の数よりも大きくなることがあります。理由は、データの最後の数行(列)をクリアした場合(行全体または列全体が削除されていない場合)、このコマンドはまだクリアされていない値を返すためです。つまり、現在は空ですが、以前に使用したことがあるものとしてカウントされます。
方法2:
ActiveSheet.Range( "A65535")。End(xlUp).Row
ActiveSheet.Range( "IV1")。End(xlToLeft).Column
次のように省略できます。
ActiveSheet。[A65536] .End(xlUp).Row
ActiveSheet。[IV1] .End(xlToLeft).Column
欠点:列(行)の最後のセルが配置されている行(列)の数のみを計算できます。この例では、列Aの最後のセルが占める行数のみが返されます。
方法3:
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
短所:ワークシートを削除またはクリアすると、実際の状況よりも大きくなります。
方法4:
ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
短所:ワークシートを削除またはクリアすると、実際の状況よりも大きくなります。
方法5:
Application.CountA(ActiveSheet.Range( "A:A"))
Application.CountA(ActiveSheet.Range( "1:1"))
カウントできるのは1つの列(行)の実際の使用のみであり、最後の行(列)の位置は必ずしも取得されません。方法2の値がこの方法よりも大きい場合、列Aのデータの間に空白の塗りつぶされていないセルがあることを意味します。
方法6:
ActiveSheet.Cells.Find(What:= "*"、After:= [A1]、SearchOrder:= xlByRows、SearchDirection:= xlPrevious).Row
ActiveSheet.Cells.Find(What:= "*"、After:= [A1]、SearchOrder:= xlByColumns、SearchDirection:= xlPrevious).Column
方法2と同じ効果
上記の方法のうち、方法1と方法2が一般的に使用されます。