• ベストアンサー

選択したセル範囲に入っているチェックボックスを全てOFFにしたい

Excel97,Windows98SEを使用しています。 マクロでセル範囲を選択(C26:R48)して、 その選択範囲内にある全てのチェックボックスのチェックを外したいのですが、 どうしたら良いのか見当がつきません…。 チェックボックスはコントロールツールではなく、 フォームで作成しています。 ご存知の方、どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.2

こんな感じで如何でしょうか。 セル範囲を選択し、このマクロを実行すると、範囲内にあるチェックボックスの チェックを外します。 Sub HaniChkOff() Dim N As Integer Dim HaniUp As Single Dim HaniDown As Single Dim HaniLeft As Single Dim HaniRight As Single With Selection   HaniUp = .Top   HaniDown = .Offset(.Rows.Count).Top   HaniLeft = .Left   HaniRight = .Offset(, .Columns.Count).Left End With With ActiveSheet   For N = 1 To .CheckBoxes.Count     With .CheckBoxes(N)       If .Top >= HaniUp And .Top < HaniDown And _         .Left >= HaniLeft And .Left < HaniRight Then         .Value = False       End If     End With   Next N End With End Sub

takahiro_
質問者

お礼

ご回答どうもありがとうございます。 教えていただきましたマクロで上手くいきました! 丸ごと書いてもらってしまい、どうもすみません…でもとても勉強になりました。 またわからないことがありましたらよろしくお願いいたします。

その他の回答 (3)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.4

#3です。 > マクロでセル範囲を選択(C26:R48)して この部分を読んでなかったです。 範囲固定ならこんな感じで良いかと思います。 Sub CheckOff2() Dim cb As CheckBox With ActiveSheet  For Each cb In .CheckBoxes   If Not Application.Intersect(cb.TopLeftCell, _    .Range("C26:R48")) Is Nothing Then cb.Value = False  Next cb End With End Sub

takahiro_
質問者

お礼

ご回答どうもありがとうございます。 教えていただきましたマクロで上手く動きました! 範囲固定のものまで書いていただきまして、とても勉強になりました。どこから手をつけたら良いのか全くわからなかったものですから…。 またわからないことがありましたらよろしくお願いいたします。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

これで良いと思います。 Sub CheckOff() Dim cb As CheckBox If TypeName(Selection) <> "Range" Then Exit Sub  For Each cb In ActiveSheet.CheckBoxes   If Not Application.Intersect(cb.TopLeftCell, _     Selection) Is Nothing Then cb.Value = False  Next cb End Sub

  • comv
  • ベストアンサー率52% (322/612)
回答No.1

リンク先セルの TRUE を FALSEもしくは空白 にすれば? (それぞれのリンク先をチェックボックスの配置してるセル位置にしてる場合)

takahiro_
質問者

お礼

早速のご回答ありがとうございます。 説明が足りなかったようですみません…。 チェックボックスはリンク先セルを設定していません。 そのチェックボックスは、チェックを入れると、同じ行にある複数のセルに○印を入れ、 チェックを消したら○印も消える、というマクロを作ってあります。 今作成していますのは、コマンドボタンをクリックすると、チェックボックスを含んだ行を増やす(既存の行をコピーして下の行に貼り付ける)マクロなのですが、 もしコピー元の行にチェック済みのチェックボックスがあった場合、貼りつけた先のチェックボックスにもチェックが入っているのでそれを全て自動で外したいということなのです(コピー元のチェックは外さないようにしたいです)。 何か良い方法がありましたら教えていただけませんでしょうか? よろしくお願いします。

関連するQ&A