過去ログ

                                Page     520
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼チェックボックスの一括リセットについて  ラッキー 03/1/9(木) 12:03
   ┗Re:チェックボックスの一括リセットについて  BOTTA 03/1/9(木) 14:56
      ┗Re:チェックボックスの一括リセットについ...  ポンタ 03/1/9(木) 15:06
         ┣Re:チェックボックスの一括リセットについ...  ラッキー 03/1/9(木) 17:51
         ┗Re:チェックボックスの一括リセットについ...  BOTTA 03/1/9(木) 17:52
            ┗Re:チェックボックスの一括リセットについ...  ポンタ 03/1/9(木) 18:50

 ───────────────────────────────────────
 ■題名 : チェックボックスの一括リセットについて
 ■名前 : ラッキー
 ■日付 : 03/1/9(木) 12:03
 -------------------------------------------------------------------------
   VBA初心者です。
チェックボックスの一括リセットについてアドバイスお願いします


シートにフォームで貼り付けた
チェックボックスが5個あります
(5個のチェックボックスはグループ化してあります)

このようなシートがシート1からシート30まで30枚あります

これらを一括してリセットさせたいと思います
つまり
 セットされてるものはリセット
 リセットされてるものはそのまま

マクロの記録では記録されませんでした

どうすればよいでしょうか。

よろしくお願いします。
 ───────────────────────────────────────  ■題名 : Re:チェックボックスの一括リセットについて  ■名前 : BOTTA  ■日付 : 03/1/9(木) 14:56  -------------------------------------------------------------------------
   ラッキー さん、こんにちは。
>シートにフォームで貼り付けた
「フォーム」ツールバーで貼り付けたコントロールはVBAでは制御できないんじゃ
無かったでしょうか?(ごめんなさい。回答欄、久しぶり。しかも、記憶が曖昧。)

>チェックボックスが5個あります
代替えとして「コントロールツールボックス」ツールバーでCheckBoxを貼り付けた
として、

Sub aaa()
  For i = 1 To Worksheets("Sheet1").CheckBoxes.Count
    Worksheets("Sheet1").OLEObjects("CheckBox" & i).Object.Value = False
  Next
End Sub

とりあえず、Sheet1のみチェックをはずしてみました。
 ───────────────────────────────────────  ■題名 : Re:チェックボックスの一括リセットについ...  ■名前 : ポンタ  ■日付 : 03/1/9(木) 15:06  -------------------------------------------------------------------------
   標準モジュールに以下のコードを貼り付けて
お試しください。

Sub test()
  Dim Ws As Worksheet
  Dim Sh As Shape
  For Each Ws In Worksheets
    For Each Sh In Ws.Shapes
      If Sh.FormControlType = xlCheckBox Then
        Sh.ControlFormat = -4146
      End If
    Next
  Next
End Sub
 ───────────────────────────────────────  ■題名 : Re:チェックボックスの一括リセットについ...  ■名前 : ラッキー  ■日付 : 03/1/9(木) 17:51  -------------------------------------------------------------------------
   >Sub test()
>  Dim Ws As Worksheet
>  Dim Sh As Shape
>  For Each Ws In Worksheets
>    For Each Sh In Ws.Shapes
>      If Sh.FormControlType = xlCheckBox Then
>        Sh.ControlFormat = -4146
>      End If
>    Next
>  Next
>End Sub


BOTTAさん、ポンタさんアドバイスありがとうございます。
参考にさせて頂きます。

あれからいろいろ試した結果
フォームで貼り付けたチェックボックスの
リンク先の値をTRUEからFALSEに書き換えると
チェックボックスのチェックがはずれるようですので

リンク先AO14からAO18の値を

moji = "FALSE"

'チェックボックスのリセット
   For i = 1 To 5
     Range("AO14").Offset(i - 1, 0).Select
     ActiveCell.FormulaR1C1 = moji
   Next i

でリセットできました。
そして上記を各シートで行う

以上で一応できましたが
これって邪道でしょうか
スタイルもあまりよくないです.....
 ───────────────────────────────────────  ■題名 : Re:チェックボックスの一括リセットについ...  ■名前 : BOTTA  ■日付 : 03/1/9(木) 17:52  -------------------------------------------------------------------------
   をぉ!なるほど。
さすがです。ポンタさん

先ほど、私が試したときは、シート上に「コントロールツールボックス」の
CheckBoxを貼り付けたままで実行したので、エラーが発生してしまいました。

ということは、何か余分なコントロールがあるとエラーになるかもしれないので
念のため、

Sub test02()
  Dim Ws As Worksheet
  Dim Sh As Shape
  For Each Ws In Worksheets
    For Each Sh In Ws.Shapes
      If Sh.Type = msoFormControl Then
        If Sh.FormControlType = xlCheckBox Then
          Sh.ControlFormat = -4146
        End If
      End If
    Next
  Next
End Sub

と、した方がいいかも。
 ───────────────────────────────────────  ■題名 : Re:チェックボックスの一括リセットについ...  ■名前 : ポンタ  ■日付 : 03/1/9(木) 18:50  -------------------------------------------------------------------------
   BOTTAさん、フォローありがとございます。

書いたつもりで忘れてました。(^_^;)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 520