[[20171115230940]] 『チェックボックスの一括変更』(mini) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『チェックボックスの一括変更』(mini)

チェックボックスの一括変更をしたいのですが
以下のsh2.CheckBox(z).Value = False の部分で「オブジェクトはこのプロパティまたはメソッドをサポートしていません。」となります。
どうすればいいですか?
教えてください。

Dim z As Integer

        For z = 5 To 55
            sh2.CheckBox(z).Value = False
        Next

< 使用 Excel:Excel2016、使用 OS:Windows10 >


sh2..CheckBoxes("Check Box " & z).Value

これでできませんか。

(マナ) 2017/11/16(木) 00:00


そうしてみましたが、
今度は「WorksheetクラスのCheckBoxesプロパティを取得できません。」と表示されました。
(mini) 2017/11/16(木) 10:10

フォームコントロールだと、

CheckBoxes

ですが、ActiveXコントロールの方のチェックボックスなら、

OLEObjects

の方になるようです。

Sub test()

    Dim o As OLEObject
    Dim objChk As MSForms.CheckBox

    For Each o In ActiveSheet.OLEObjects
        With o
            If TypeName(.Object) = "CheckBox" Then
                Set objChk = .Object
                objChk.Value = False
            End If
        End With
    Next
End Sub

※objChkはサンプル的には不要ですが、違いを理解するためあえて
変数を用意し代入してます。
(まっつわん) 2017/11/16(木) 11:04


理解が悪くてすいません。
以下に変更したところ「オブジェクトがありません」となります。

Dim z As Integer

        For z = 5 To 55
            sh2.OLEObjects("CheckBox" & z).Value = False
        Next

(mini) 2017/11/16(木) 11:17


sh2.OLEObjects("CheckBox" & z).Object.Value = False

ですかね?
ちょっと饒舌な感じですがそういうルール(構造)なので・・・
(まっつわん) 2017/11/16(木) 11:38


上記のように変更しましたが「オブジェクトが必要です」と出てしまいます。
(mini) 2017/11/16(木) 11:45

>上記のように変更しましたが「オブジェクトが必要です」と出てしまいます。
じゃぁ、そういう名前の物が無いのかも?
半角スペースが数字の前に入りませんか?
(まっつわん) 2017/11/16(木) 12:01

>「オブジェクトが必要です」と出てしまいます。

あぁ、変数「sh2」にワークシートを代入してないと、
そういうエラーが出るようです。
変数の宣言すらもしてないのかな?

sh2ってなんですのん?
コードを全部提示してくれないと、なんでそういうことになるかが分かり難いです><

(まっつわん) 2017/11/16(木) 13:48


すいません。
下記が全文です。
sh2.OLEObject("CheckBox" & z).Object.Value = False
の部分で「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」
と出ます。

Sub checkbox_reset()

     Dim sh1, sh2, sh3, sh4 As Worksheet
        Set sh1 = Worksheets(1)
        Set sh2 = Worksheets(2)
        Set sh3 = Worksheets(3)
        Set sh4 = Worksheets(4)
     'チェックボックスのリセット
    Dim z As Integer
        For z = 5 To 55
            sh2.OLEObject("CheckBox" & z).Object.Value = False
        Next

End Sub
(mini) 2017/11/16(木) 14:56


 Dim sh1, sh2, sh3, sh4 As Worksheet

現状のコードだと、ワークシートオブジェクトの型で宣言されているのは、sh4のみです。
その書き方だと、他はVariant型になります。

 Dim sh1 as worksheet, sh2 as worksheet, sh3 as worksheet, sh4 As Worksheet
としたらどうなるでしょうか?
(まっつわん) 2017/11/16(木) 16:06


たぶんコードの途中でsh2がNothinngになっているか、
別途で値が上書きされたかだと思います。

エラーが出て止まったところで、
ローカルウィンドウのsh2を確認してみるといいと思います。

表示の意味が解らなければまた聞いて下さい。
(まっつわん) 2017/11/16(木) 16:11


 sh2.OLEObject("CheckBox" & z).Object.Value = False
           ↓
 sh2.OLEObjects("CheckBox" & z).Object.Value = False
(きまぐれ) 2017/11/16(木) 16:49

ありがとうございます。
何とか成功しました!!
(mini) 2017/11/17(金) 09:00

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.