Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1355 / 13644 ツリー ←次へ | 前へ→

【74934】シート上にあるボタンのcaptionの取得 たかはす 13/10/28(月) 13:39 質問[未読]
【74935】Re:シート上にあるボタンのcaptionの取得 ウッシ 13/10/28(月) 13:49 回答[未読]
【74936】Re:シート上にあるボタンのcaptionの取得 たかはす 13/10/28(月) 14:15 お礼[未読]
【74937】Re:シート上にあるボタンのcaptionの取得 kanabun 13/10/28(月) 14:38 発言[未読]
【74939】Re:シート上にあるボタンのcaptionの取得 こたつねこ 13/10/28(月) 22:05 回答[未読]
【74947】Re:シート上にあるボタンのcaptionの取得 ichinose 13/10/30(水) 0:02 発言[未読]

【74934】シート上にあるボタンのcaptionの取得
質問  たかはす  - 13/10/28(月) 13:39 -

引用なし
パスワード
   ネットで調べてもわからなかったので質問させていただきます。

シート1に、btnokというボタンが存在し、
txtstr=worksheets("シート1").btnok.caption

上記のコードで問題なく動いていたのですが、
本プロジェクトのコーディング規約にて、
シートオブジェクトは一度変数に格納してから使用しなくてはならず
dim sh as worksheet
set sh=worksheets("シート1")
txtstr=sh.btnok.caption
としたらエラーになってしまいます。

似たようなので
worksheets("シート1").range("A1").value
sh.range("A1").value
ならどちらも問題なく動くのですが、
なぜボタンのcaptionは取得出来ないのでしょうか?

【74935】Re:シート上にあるボタンのcaptionの取得
回答  ウッシ  - 13/10/28(月) 13:49 -

引用なし
パスワード
   こんにちは

btnokがボタンのオブジェクト名なら

txtstr = sh.OLEObjects("btnok").Object.Caption

でしょうか。

▼たかはす さん:
>ネットで調べてもわからなかったので質問させていただきます。
>
>シート1に、btnokというボタンが存在し、
>txtstr=worksheets("シート1").btnok.caption
>
>上記のコードで問題なく動いていたのですが、
>本プロジェクトのコーディング規約にて、
>シートオブジェクトは一度変数に格納してから使用しなくてはならず
>dim sh as worksheet
>set sh=worksheets("シート1")
>txtstr=sh.btnok.caption
>としたらエラーになってしまいます。
>
>似たようなので
>worksheets("シート1").range("A1").value
>sh.range("A1").value
>ならどちらも問題なく動くのですが、
>なぜボタンのcaptionは取得出来ないのでしょうか?

【74936】Re:シート上にあるボタンのcaptionの取得
お礼  たかはす  - 13/10/28(月) 14:15 -

引用なし
パスワード
   できました!
ありがとうございます。

そもそも>txtstr=worksheets("シート1").btnok.caption
この書きたかもたまたま上手く動いてただけで、
本来なら間違っていたということですかね?

【74937】Re:シート上にあるボタンのcaptionの取得
発言  kanabun  - 13/10/28(月) 14:38 -

引用なし
パスワード
   ▼たかはす さん:

>そもそも>txtstr=worksheets("シート1").btnok.caption
>この書きたかもたまたま上手く動いてただけで、
>本来なら間違っていたということですかね?

回答ではないのですが、
変数sh の宣言を As Worksheet でなく、
As Object とあいまいに宣言しますと
エラーなく、取得できます。

 Dim sh As Object '← ココ
 Dim txt As String
 
 Set sh = Worksheets("Sheet1")
 txt = sh.btnOK.Caption

【74939】Re:シート上にあるボタンのcaptionの取得
回答  こたつねこ  - 13/10/28(月) 22:05 -

引用なし
パスワード
   たかはす さん

>>そもそも>txtstr=worksheets("シート1").btnok.caption
>>この書きたかもたまたま上手く動いてただけで、
>>本来なら間違っていたということですかね?

違います。

txtstr=worksheets("シート1").btnok.caption
を同じように表現するなら以下のような感じです。

【kanabunさんのコードをお借りします】

 Dim sh As Sheet1 '← ココ
 Dim txt As String
 
 Set sh = Sheet1
 txt = sh.btnOK.Caption

>本プロジェクトのコーディング規約にて
上記のような表現から、職業プログラマだと判断してざっくりとしか説明
しませんが

Dim sh as WorkSheet

と宣言した場合は、WorkSheetクラスのインターフェイスを使用しますが
WorkSheetクラスに『btnOK』なんて言うメソッドもプロパティもないため
エラーになります。

【74947】Re:シート上にあるボタンのcaptionの取得
発言  ichinose  - 13/10/30(水) 0:02 -

引用なし
パスワード
   おはようございます。
私も以前関連内容を目安箱に投稿したことがあります。

www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=247;id=FAQ


この時、私の感想は、インプリメントするにしろ しないにしろ、
一貫性のある仕様にして欲しいなあ

ということでした。

1355 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free