【VBA】セルを全選択するとバグる
Excelのマクロでたまに起こる話。
作ったVBAプログラミング内に、
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
があります。
結構使うと思います。
その中に、特定のセル”1つ”を選択していた場合に~と考えて,
以下のプログラムのように、単一選択の条件式を書いているとエラーになってしまいます。
If Selection.Count = 1 Then
スポンサーリンク
・現象
・Selection.Countを使っている。
・善選択(またはそれに近いくらいのセルを選択する)
・なんか、「オーバーフローしました」というメッセージが出てしまう。
・原因
Selection.Countは、今選択しているセルの個数を数えてくれます。
でも、Selection.Countがカウントできる数ってLONG型の限界値までらしいっす。
どのくらいなのか詳細は分かりませんが、EXCELが、
EXEEL2003→EXCEL2007→EXCEL2010→EXCEL2013→EXCEL2016‥‥‥
と順々にバージョンアップしていき、
縦と横の最大値も増え、
選択できるセル数も増え上がっていった。
もはやロング型では追いつけない!!
こんなストーリーがなんとなく想像が付くかと。
・解決策
・Selection.CountLargeを使っている。
後ろにLARGEを付けるだけです。
ただ、.CountLargeはエクセルの2007から入社した新人君なので、
2003と2007を行き来するようなプログラムでは使いにくいかもしれません。
とりあえず今自分は2013以降ばっかり使っているので、
Selection.CountLargeをメインに使っていきます。
![]() | 中古価格 |
![]() | プラッツ スタートレック U.S.S.エクセルシオール NCC-2000 (塗装済み完成品) プラモデル 新品価格 |
![]() | AMT843 1/1000 スタートレック U.S.S. エクセルシオール 新品価格 |