前提・実現したいこと
ExcelVBAにて、
「登録」シートの、複数あるうちの一つのチェックボックスをクリックすると
「更新」マクロを走らせてチェックしてあるものの内容を表示するマクロを作りたいと思っています。
シート名を右クリックして、「コードの表示」で出るスペースにマクロを記入しています。
チェックボックス_Click()は、チェックボックスを右クリックしてマクロを登録で紐づけ(?)しました。
自分のイメージだと、
チェックボックスが押される
↓
チェックボックス_Click に入る
↓
「更新」が呼び出されて走る
↓
値が書き換えられて、チェックボックス_ClickのEnd Subに到達して終了する
なのですが、設定したブレークポイントを見てみると、
無限に「更新」が呼び出されているようでした。
マクロを書く場所が悪いのか、書き方が悪いのか素人の為判断できず、行き詰っています。
どこをどう改良すればループに陥らなくなるのか、教えていただけると有難いです。
どうかよろしくお願いいたします。
発生している問題・エラーメッセージ
Excelが固まって落ちます。
該当のソースコード
Sub チェックボックス_Click() Call 更新 End Sub Private Sub 更新() Dim str As String For I = 0 To 19 If Sheets("データ").Range("A" & I + 123).Value = "True" Then str = str + "・" + Sheets("データ").Range("B" & I + 123).Value End If Next I Dim strl As Long strl = Len(str) str = Right(str, strl - 1) Sheets("登録").Range("B6").Value = str End Sub
試したこと
更新のSubをFunctionに変えてみましたが同じように固まってしまいました。
補足情報(FW/ツールのバージョンなど)
Excel2016です。
チェックボックスに「リンクするセル」を設定したりしていませんか? そのうえで、「リンクするセル」に設定されたセルの値をマクロで書き換えたりしていませんか?このコードだけだと問題ないように見えますが、他にコードがあれば前述の観点で該当しそうなコードがあれば挙げられるとよいかと。
回答ありがとうございます。先ほど解決したのですが、今回の問題はWorksheetイベントの部分に不用意に更新()を置いてしまった事により発生しておりました。おっしゃる通り、そのシートに関わるであろうコードを全文載せなかった私の不手際でした。少ない情報でここまで考えて頂いて、心から感謝申し上げます。また行き詰ったときに参考にさせて頂きます、ありがとうございました。

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