バグを修正したバージョン5.2.0を本日配布元のVectorへ申請いたしました。
主な修正点は2つでございます。
①ワークシート上に表示される検索窓を表示させるためのボタンフォームを✕ボタンで消すことができなくいたしました。
②セルの4マス選択でボタンフォームを表示させていた機能を廃止いたしました。
以上の2点につきまして修正いたしました。
②の修正によりワークシートの一番左上の角を押してシート全選択した際に起こる「オーバーフロー」エラーをなくしました。
②の修正によりボタンフォームを再表示させることができなくなったため、①の修正でボタンフォームを消せないようにいたしました。
オーバーフローエラーとは何か
オーバーフローエラーとはデーター形ごとに扱えるデーター量(データー数)の最大値を超えてしまったときにおこるエラーのことです。
今回起こったオーバーフロー
今回エラーが起こったのはRange形というデーター形でした。Range形はワークシートのセルとか列とかを扱えるデーター形です。Range形が扱えるデーター数は2,147,483,647 個のセル(2,048 列未満)です。
これに対してワークシートの全選択を行った場合、セル数は17,179869,184個(最大値)、列数は16,384列(最大値)にも上ります。
ワークシートのセル数と列数の値は最大値ですので挿入などを行ってセル数や列数を最大にした場合の値ですので新規で作成したばかりのワークシートではもっとセル数や列数は少なくなると思いますが、それでもワークシートの全選択を行った場合Range形が扱えるデーター量を超えてしまったということになります。
今回起こった具体例
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Selec3 = Target.Column
RetsuNo = Selec3
If Target.Count = 4 Then
If Flag3 = False Then
UserForm3.Show vbModeless
End If
End If
End Sub
今回エラーが起こったのは上記コードです。上記コードはワークシートに配置されたコードです。
Targetという変数がRangeで宣言されています。
Targetという変数は選択されているセル数を常時数えています。
そしてIf Target.Count = 4で選択されているセルの数が4になったらUserForm3.Showユーザーフォーム3を起動する、というコードです。
このコードがあったのでワークシートを全選択してしまった場合、Range形の変数Targetが扱えるデーター量を超えてしまいオーバーフローエラーが発生しました。
現在このコードは廃止しております。