何歳が一番楽しかった?

Excel97,Windows98SEを使用しています。

マクロでセル範囲を選択(C26:R48)して、
その選択範囲内にある全てのチェックボックスのチェックを外したいのですが、
どうしたら良いのか見当がつきません…。

チェックボックスはコントロールツールではなく、
フォームで作成しています。

ご存知の方、どうぞよろしくお願いいたします。

A 回答 (4件)

こんな感じで如何でしょうか。


セル範囲を選択し、このマクロを実行すると、範囲内にあるチェックボックスの
チェックを外します。

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
    • good
    • 1
この回答へのお礼

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

お礼日時:2003/11/25 15:29

#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
    • good
    • 2
この回答へのお礼

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

お礼日時:2003/11/25 15:37

これで良いと思います。



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
    • good
    • 0

リンク先セルの TRUE を FALSEもしくは空白


にすれば?
(それぞれのリンク先をチェックボックスの配置してるセル位置にしてる場合)
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
説明が足りなかったようですみません…。

チェックボックスはリンク先セルを設定していません。
そのチェックボックスは、チェックを入れると、同じ行にある複数のセルに○印を入れ、
チェックを消したら○印も消える、というマクロを作ってあります。

今作成していますのは、コマンドボタンをクリックすると、チェックボックスを含んだ行を増やす(既存の行をコピーして下の行に貼り付ける)マクロなのですが、
もしコピー元の行にチェック済みのチェックボックスがあった場合、貼りつけた先のチェックボックスにもチェックが入っているのでそれを全て自動で外したいということなのです(コピー元のチェックは外さないようにしたいです)。

何か良い方法がありましたら教えていただけませんでしょうか?
よろしくお願いします。

お礼日時:2003/11/21 13:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A