こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBAのコントロールについて

VBA初心者です。


現在、マクロが登録された「コントロール」を作成するところで困っていることがあります。

まず、お手数ですが、添付した画像を見ていただきたいです。

添付画像のように、「コントロール」を作成したのち、
VBEで作成したマクロを登録しようと思っています。

その際、「コントロール」のcaptionの名称を取得して、
その取得値を、その後に続くプログラムに利用したいと考えています。

ですが、そのcaption名称の取得方法がわかりません。
以下のように記述してみたりしたのですが、エラーが発生して、なかなか先に進めないでいます。

【目的】
 ■Numberに「コントロール」の名称"Level1"を格納したい。
 
【記述例】
(ちなみにコントロールがある、ワークシート名は「check」です)

Sub BottunClick()

Dim Number As String

  Number = ActiveWorkbook.Worksheets("check").OLEObjects("Level1").Caption

end sub

【エラーメッセージ】
「WorksheetクラスのOLEObjectsプロパティを取得できません。」

ちなみに、Excelは2007を使用しています。

コントロールのcaptionからは、名称を取得することができないんでしょうか。
コントロールのcaption名称を取得する方法や、
もしよろしければ、参考になるURLを教えていただけると嬉しいです。

よろしくおねがいします。

投稿日時 - 2012-04-21 14:16:07

QNo.7433157

すぐに回答ほしいです

質問者が選んだベストアンサー

#1です。
改めて理屈を探してみたところ、VBAのヘルプにある事が分かりました。Excel2000のヘルプですが、
「シートで ActiveX コントロールを使用する」というトピックスが、たぶん2007にもあると思いますので、ご覧下さい。

以下、copy right Microsoft
OLEObject オブジェクトのプロパティとして表されない、コントロールのプロパティは Object プロパティを使用して実際のコントロール オブジェクトを取得して設定することができます。次の使用例は、"CommandButton1" というコントロールのキャプションを変更します。

Worksheets(1).OLEObjects("CommandButton1"). _
Object.Caption = "実行"

投稿日時 - 2012-04-21 15:09:51

お礼

再度、お早い回答ありがとうございます。

なんとか作成することができました。ありがとうございます。

すいません。私の質問の方法に色々問題があるみたいでした。
まず、コントロールの「オブジェクト名」自体が分からないということを
申し上げるべきでした。

ヘルプから、ご指定の検索キーワードで探したところ、
コントロールのオブジェクト名を表示させる方法が分かったので
先に進めることができました。

色々ご指導いただきありがとうございました。

投稿日時 - 2012-04-21 15:26:50

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

#1です。

>そのコントロールに「Level1」というキャプションをつけました。
>その「Level1」という文字をプログラム上でNumberという変数 に格納したかったのですが、それができませんでした。

ActiveWorkbook.Worksheets("check").OLEObjects("Level1").Object.Caption

ここで、OLEObjects("Level1")に入れるのは、Captionではなくて、オブジェクト名です。
もし、Captionを指定して、そのコントロールを操作したいのなら、ワークシート上のOLEObjectsコレクションを総当たりでチェックして、特定する必要があります。(Captionを持たないコントロールもありますので、エラー対策も必要になります)
でも、Captionが分かっていて、それを他でも使いたいなら上記のような面倒なことをする必要も無い気がしますが、勘違いしているでしょうか?

投稿日時 - 2012-04-21 15:21:12

ANo.1

画像は小さくて良くわかりませんが、下記の様な事でしょうか。ご参考まで。

Sub test()
Debug.Print Worksheets("Sheet1").Label1.Caption
Debug.Print Worksheets("Sheet1").OLEObjects("Label1").Object.Caption
End Sub

投稿日時 - 2012-04-21 14:46:09

補足

回答ありがとうございます。

画像が見えづらくてすいません。
Objectという記載がなかったからかなと、試してみたんですが、また同じエラーメッセージがでてしまいました。

ちょっと違うみたいです。すいません。

ちなみに画像は、以下のようなことを示したかったんです。

エクセルのツールバーからコントロールを作成し、
そのコントロールに「Level1」というキャプションをつけました。
その「Level1」という文字をプログラム上でNumberという変数 に格納したかったのですが、それができませんでした。

質問内容がわかりづらかったようで、申し訳ありませんでした。

投稿日時 - 2012-04-21 15:03:11

あなたにオススメの質問