[[20040301100742]] 『OLEObjectsについて』(Rai) ページの最後に飛ぶ

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

 

『OLEObjectsについて』(Rai)

コントロールのプロパティを取得するのをループでまわして取得しようと思っています。
ワークシート上では「Controls」が使用できないため
「OLEObjects」を使ってみようと思ったのですが、

「WorkSheetクラスのOLEObjectsプロパティを取得できません」(エラー番号1004)

というエラーがでます。
エラーがでているスクリプトは以下の文です

ActiveSheet.OLEObjects("OpnKey" & i).Object.Value = True
(OpnKeyはオプションボタンのオブジェクト名です)

なぜエラーが出ているか、又は回避方法などがありましたら
御教え下さい。

宜しくお願い致します。


補足ですが、Excelは97のSR-2です。(Rai)

 EXCEL2000 しかないので、相違点があるかもしれませんが
 コントロールツールボックスのオプションボタンでしょうか?

 また、前後のコードはどのようになっていますか?
 オプションボタンはいずれか1個を True にするので、ループの意味がないような・・

 ちなみに以下のコードで動作しました。OptionButton3がTrueになります。

 Dim I As Long

    For I = 1 To 3
        ActiveSheet.OLEObjects("OptionButton" & I).Object.Value = True
    Next I

  (INA)

 ----
>EXCEL2000 しかないので、相違点があるかもしれませんが
>コントロールツールボックスのオプションボタンでしょうか?
はい、そうです。

>オプションボタンはいずれか1個を True にするので、ループの意味がないような

すいません、オプションボックスはエラーチェック時に使用する予定でした。

チェックボックスやらオプションボックスが多いので
コントロールが増えた時のメンテナンスを少しでも楽にするため
ループさせるような形にしました。

    For i = 1 To コントロールの最大数
        ActiveSheet.OLEObjects("ChkBox" & i).Object.Value = True
    Next i

iをIntegerからLongに変更してみましたが、やはりエラーがでます。
参照設定とか関係あるのかなぁ...。
Excel97では無理そうなので、一個ずつ処理します。


 いちおう、97 でも動作するようなので参考にしてみてください。
http://www2.moug.net/cgi-bin/pgsearch.cgi?db=technic&tb=exvba&id=000&wd=OLEObjects&jk=2

  (INA)

ご回答ありがとうございます。
どうやらオブジェクトに任意の名前を付けているのがよくないようです。

ActiveSheet.OLEObjects("ChkBox" & i).Object.Value = True

矢印部分をCheckBoxにしたら2回ループしました。
3回目にエラーになりましたが...。

プロパティのオブジェクト名を変えているのに(ChkBox1やCmdBtn1など)
OLEObjectクラスのNameでオブジェクト名を取得すると
すべて、CheckBox1やCommandButton1という名前になってしまっています。

上記の矢印部分はプロパティのどの値を見ているのでしょうか?
CheckBox(オブジェクト名:ChkRefeUnit1)のプロパティを参照している時、画面上部の数式バーには
CheckBox1  =EMBED("Forms.CheckBox1","")となっていますが
何か関係ありますでしょうか?


 Excel2000では

 オブジェクト名:あCheckBox1 を配置して、以下のコードを試すと、

 MsgBox TypeName(ActiveSheet.OLEObjects("あCheckBox1").Object)
 →CheckBox

 MsgBox ActiveSheet.OLEObjects("あCheckBox1").Name  
 →あCheckBox1

 が取得できます。

 >CheckBox1  =EMBED("Forms.CheckBox1","")となっていますが
 こちらでは、Forms.CheckBox.1 のように
  タイプネーム+ . + 数字
 となっています。

  (INA)

>CheckBox1  =EMBED("Forms.CheckBox1","")となっていますが

Excel97では、OLEObjectsは名前ボックス(上記矢印)を参照しているようで
名前ボックスと同じ名前に変更したところ正常に動作しました。

私がプロパティのオブジェクト名を参照していると勘違いしているのが原因でした...。

長々とありがとうございました。


コメント返信:

[ 一覧(最新更新順) ]


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