[[20180915180613]] 『クラスを用いて複数のボタンの処理を行いたい。』(いずも) ページの最後に飛ぶ

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

 

『クラスを用いて複数のボタンの処理を行いたい。』(いずも)

はじめまして。いずもと申します。
この度、表題のような処理を行いたかったのですが、うまく行かなかったため、質問させていただきます。

ユーザフォームにて、15個あるトグルボタンそれぞれが押された場合、ワークシートの該当箇所に"○"を書き込むという処理を、クラスを用いて記述を少なくしようと思い、次のようなソースを書きました。

【ユーザフォーム】
Private NumTbtn(1 To 15) As New Class1

'インスタンスの生成
Private Sub UserForm_Initialize()

    Dim i As Integer
    For i = 1 To 15
        NumTbtn(i).NewClass Controls("tbtn" & i), i
    Next
End Sub

【クラスモジュール】
'メンバー選択画面のジョブボタン処理
Private WithEvents Tbtn As MSForms.ToggleButton
'ボタンの数字を格納する変数を宣言
Private Index As Integer
Private Job As MSForms.ToggleButton

'コンストラクタ処理
Public Sub NewClass(ByVal c As MSForms.ToggleButton, _

                    ByVal i As Integer)
    '引数のトグルボタンを変数に格納
    Set Tbtn = c
    Job = c
    'コマンドボタンの数字を変数に格納
    Index = i
End Sub

Private Sub Tbtn_Click()

    With Job
        Dim ws As Worksheet
        Set ws = Worksheets("Table")
        If .Value Then
            'トグルボタンONの処理
            .Caption = "ON"
            ws.Cells(4, i) = "○"
        Else
            'トグルボタンOFFの処理
            .Caption = "OFF"
            ws.Cells(4, i) = ""
        End If
    End With
End Sub

しかし、実行すると、
「実行時エラー'91':オブジェクト変数またはWithブロック変数が設定されていません」というエラーが発生します。

クラスモジュールのクリック時の動作の箇所になにか正しくない記載があるのかと思い、格闘しましたが解決できませんでした。

どなたかご助力のほど宜しくお願いします。

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


そのエラーはSetが足りない場合によく起こります。
今回の場合は
   Job = c
が原因ですね。
   Set Job = c
としましょう。
(名無し) 2018/09/15(土) 18:34

 1)
 >Job = c
 Set Job = c

 2) i を Indexに変更

 ですか?
(seiya) 2018/09/15(土) 18:36

返信ありがとうございます。
早速修正し、試してみました。

対象のエラーログは出ませんでした!

・・・が、今度は
「実行時エラー'2147024809 (80070057)':指定されたオブジェクトは見つかりません。」

といったエラーが出力されました。
このエラーも原因的には似たようなものでしょうか?
(いずも) 2018/09/15(土) 19:02


 トグルボタンの名前が tbtn1〜tbtn15で、
 2か所の
 >ws.Cells(4, i)
 のiをIndexに変換すれば、正常に動作すると思いますよ?
(seiya) 2018/09/15(土) 19:06

seiyaさん 返信ありがとうございます。
ご指摘どおりに修正しました。
しかし、エラー内容は変わらず・・・
実行時に具体的にどこの部分で指定しているオブジェクトに問題があるのか探し当てることもできませんでした。

もし、よろしければこういうときに当たってみたほうが良い箇所とかあればアドバイスお願いします。
(いずも) 2018/09/15(土) 19:14


 こういうことではないのですか?

 アップしたファイルにはtbtn1〜tbtn10までの10個のトグルボタンを配置しています。
 解決したようなのでファイルを削除しました。
(seiya) 2018/09/15(土) 19:26

seiyaさん 返信とサンプルまでありがとうございます。
動作を確認してみました。実現したかった機能そのまんまです、ありがとうございます。
ソース確認して何が悪かったのか精査してみます。
ありがとうございました。
(いずも) 2018/09/15(土) 19:30

皆様、回答ありがとうございました。

頂いたソースをもとに原因を解析しました

・・・・・・・・・・・・・

トグルボタン9の名称に誤りがありました・・・・・・・・・・

しょーもない原因ですいませんでした!!!!
(いずも) 2018/09/15(土) 19:35


コメント返信:

[ 一覧(最新更新順) ]


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