ビブロスウェブサイト

ゲームの話題を中心に、好き勝手書いてます。

【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をメインに使っていきます。

「エクセルシオール」全幕 [DVD]

中古価格
¥1,480から
(2018/11/23 23:12時点)

プラッツ スタートレック U.S.S.エクセルシオール NCC-2000 (塗装済み完成品) プラモデル

新品価格
¥13,133から
(2018/11/23 23:13時点)

AMT843 1/1000 スタートレック U.S.S. エクセルシオール

新品価格
¥6,977から
(2018/11/23 23:13時点)

 - 学習