こんばんは。
たぶん、Excelの勉強の過程でされていることだと思います。ですから、逆に、回答者側が手を入れにくいです。
おやりになろうとしていることは、だいたい分かりますが、全体的に、コントロールツールを利用してということで、かなりややこしい状態になっているように思います。
書いている最中で、内容が、#1さんとだぶってしまいましたが……。
>質問の1・2がどうしてなるのか、
条件付き書式の内容も見ていない、回答者に当てさせるは、ちょっと酷です。本来、一つずつ、ご自身が設定したことを調べていくしかない、ということになるのですが、2.は、おそらくは、条件付き書式の順序が逆になっているのではないかと思います。その頻度や特殊なものを、条件の若い方に入れるということがコツです。
1.は、また、コントロールツールのLinkedCell を設定した後に、コピーしたということが原因だと思います。前回の質問の#3852659の「Excelのチェックボックスについて」で、書式設定を変えるのではなくて、プロパティを変えるというのは、意味が違いますから、そこで正しい解答が得られなかったのが原因かもしれません。しかし、もう、そういう内容は、かなりレベルが高くなってきてしまいます。書籍を読んで、というレベルではどうにもならないです。
まして、今度は、そのコントロールツールに、マクロを設定するという話になると、VBAのコントロールには、コントロール配列がありませんので、インスタンスを設けるだのという話になって、ますます、一般レベルではありません。
フォーム(ツール)なら設定は楽ですし、マクロもほとんど統一できます。しかし、今度は、セルに納めるということが、範囲が広いので、あやふやになってしまいます。あちらを立てれば、こちらが立たずということになってしまいます。
今の状態で、前回の質問ので、LinkedCell を直すマクロです。
一回ではうまく行かないかもしれませんから、何度か試さなくてはなりません。その場所自体を修正するマクロにも出来ますが、そこまでするとなると、初めから作ったほうが早いのです。
ただしくセルに納まってはいない場合は、チェックボックスを、動かしてください。
------------
□ ←上下が正しく入るようにする
------------
Sub SettingCheckBoxes()
Dim i As Long
Dim cn As OLEObject
i = 2 'チェックボックスの最初の行
'チェックボックスが、B列にあると、LinkedCell は、G列になるようになっている
For Each cn In ActiveSheet.OLEObjects
If TypeOf cn.Object Is MSForms.CheckBox Then
cn.Object.Value = True
'Offset 5 セル 右
cn.LinkedCell = cn.TopLeftCell.Offset(, 5).Address
End If
Next cn
End Sub
お礼
ご指導ありがとうございました。 特に以前の問題まで覚えていてくださって、ご指導いただいたことに大変感激しております。 ご指導により、複数の条件付書式を設定する場合、その頻度や特殊なものを若い番号に入れるということを知りませんでした。 また、チェックボックスのコントロールツールのLinkedCell を設定した後に、条件付書式をコピーしていました。それらが原因だと思います。 何だか大変難しいものに取組んだようです。 めげずに頑張りたいと思います。 親切なご指導に心から感謝しております。ありがとうございました。