前提・実現したいこと
Microsoft360のエクセルを使っています。
VBAで指定した範囲のセルにチェックボックスを埋め込みたいです。
VBAで、指定した範囲のセルにチェックボックスを埋め込みたい
でヒントをいただいたのでできると思って解決にしたのですが、やっぱりうまくいきませんでした。
下のコードでは、飛び飛びの選択範囲を指定して、ForEachでセルごとに処理するように書いたつもりですが、C5だけにたくさんのチェックボックスが埋め込まれてしまいます。
コードの中のSample_CheckBox1()は下記のページからコピペしたもので、曰く選択範囲にチェックボックスが入れられるとのことですが、
チェックボックス埋め込み
何度読んでも、どこで埋め込むセルを指定しているのかわかりません。ActiveSheetで選択範囲が指定されるんでしょうか?
発生している問題・エラーメッセージ
デバッグ中に、「中断モードでは入力できません」と出る
セルの個数分はC5に埋め込まれているようです。
該当のソースコード
vba
1Private Sub CommandButton2_Click() 2 3Dim checkBoxCells As Range 4Dim checkBoxCell As Range 5 6'指定した範囲にチェックボックス生成 7Set checkBoxCells = Range("C5:C15,E5:E15,G5:G15,I5:I15") 8checkBoxCells.Select 9 10 For Each checkBoxCell In checkBoxCells 11 Sample_CheckBox1 12 Next 13 14End Sub 15 16Sub Sample_CheckBox1() 17'チェックボックスのみとしてセルの中央に配置する 18 19 Application.ScreenUpdating = False 20 21 With ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", _ 22 Link:=False, DisplayAsIcon:=False) 23 'サイズを縮小しチェックボックスのみ表示 24 .Height = 10 25 .Width = 11 26 '対象セルの中央配置 27 .Top = .Top + (ActiveCell.Height - .Height) / 2 28 .Left = .Left + (ActiveCell.Width - .Width) / 2 29 With .Object 30 'テキスト 31 .Caption = "" 32 '背景色 33 .BackColor = rgbWhite '色定数:白 34 'チェックボックスON=True,OFF=False 35 .Value = True 36 End With 37 End With 38 39 Application.ScreenUpdating = True 40 41End Sub
試したこと
中断モードでは入力できません とか
が似た症状を扱っているように感じましたが、よくわかりませんでした。
シートを変えているのにOLEObjectを使うとまずいと言っているようなのであまり関係ないでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/21 19:15