回答編集履歴

1 途中送信の補足

imihito

imihito score 1522

2018/04/21 22:33  投稿

[Range.CountLarge プロパティ](https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/range-countlarge-property-excel) を使用することで、オーバーフローせずに個数を取得できます。
なおこの時の返り値はLongLong型となりますが、32bit版VBAでは使えないため、変数に入れる場合はVariant型変数を使用します。
また、xls形式のファイルではセルの個数が変わってくるため数値を直接指定するのは
また、xls形式のファイルではシート上のセルの個数が変わるなど、数値を直接指定するのは不安が残ります。
以下のように、実際のシート上の個数を元に判定をした方がより堅牢になるかと思います。
(Selectionを使用する以上、これでも漏れはありますが…)
```vba
With Excel.ActiveWindow.RangeSelection
   If .CountLarge = .Worksheet.Cells.CountLarge Then
       '注意文~
   End If
End With
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る