実現したいこと
前提
VBAの勉強を始めて間もないため初歩的な質問であることをご容赦ください。
Excelで作成したリストを基に同シート内に統計表を作成するためVBAを使用しています。
使用した変数は別のモジュールでも使用する可能性があるため「Public」ステートメントを使って宣言しているのですが、実行を押す度に統計結果の数値が増加してしまいます。
「Dim」を使用しているときは起こらなかった現象なのですが、原因がわかる方がいましたら教えていただけると幸いです。
【追記】
参考書で確認したところ「すべてのモジュールで有効な変数はブックを閉じたりモジュールの編集を行ったりしない限り、リセットされません。」との記載がありました。
リストに変更があった時のために作成したマクロを登録して更新ボタンを作成したいため、何か解決策がありましたらご教授ください。
【追記2】
諸事情によりコードは一部分を記載いたしました。
「○○」、「△△」の部分等は具体的な名称から変更しております。
非常に分かりにくいと思いますが、何かご指摘いただければ幸いです。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
vba
1Option Explicit 2 Public a, b, a1, b1 3 Public bosu As Integer '参照元(リスト)の母数 4 Public ○○ As Integer '○○の人数 5 Public △△ As Integer '△△の人数 6 7Sub エントリー者の進捗状況及び割合() 8 Dim x As Integer 9 10 bosu = 205 '200人まで反映されます 11 a = 5 '作成する表の起点位置(行) 12 b = 27 '作成する表の起点位置(列) 13 14 a1 = 6 '参照元の起点の位置(行) 15 b1 = 1 '参照元の起点の位置(列) 16 17 'セルを指定するときはすべてCells(a+2,b+1)、Cells(a1,b1+4)のように使用しています 18 19 Cells(a, b + 2).Value = "割合" 20 Cells(a, b + 1).Value = "人数(人)" 21 Cells(a + 1, b).Value = "○○の人数" 22 Cells(a + 2, b).Value = "△△の人数" 23 24 25 For x = a1 To bosu 26 27 If Cells(x, b1).Value <> "" Then 28 ○○ = ○○ + 1 29 Cells(a + 1, b + 1).Value = ○○ 30 31 End If 32 Next x '○○の人数 33 34 For x = a1 To bosu 35 36 If Cells(x, b1 + 2).Value = 1 Then 37 △△ = △△ + 1 38 Cells(a + 2, b + 1).Value = △△ 39 40 End If '△△の人数 41 Next x
試したこと
ClearContentsを使用して実行するたびにセルの数値を毎回リセットするようにしたのですが、結果は変わらず数値は増えるままでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

回答1件
あなたの回答
tips
プレビュー