Excel VBA質問箱 IV

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

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


12719 / 76734 ←次へ | 前へ→

【69530】Re:コマンドボタンから各シートへ
発言  ichinose  - 11/7/28(木) 20:52 -

引用なし
パスワード
   以下のコードをボタンに登録し対象ボタンをクリックしてみてください。


Sub btnClick()
  If TypeName(Application.Caller) = "String" Then
    MsgBox ActiveSheet.Buttons(Application.Caller).Caption
    MsgBox ActiveSheet.Buttons(Application.Caller).Text
    MsgBox ActiveSheet.Shapes(Application.Caller). _
                  TextFrame.Characters.Text
    MsgBox ActiveSheet.Shapes(Application.Caller).OLEFormat.Object.Caption
    MsgBox ActiveSheet.Shapes(Application.Caller).OLEFormat.Object.Text
    MsgBox ActiveSheet.Shapes(Application.Caller).DrawingObject.Caption
    MsgBox ActiveSheet.Shapes(Application.Caller).DrawingObject.Text
   End If
End Sub
7つの記述全てが対象のボタンに表示されている文字列を表しています。

よって、提示されたコードの

    BTN = ActiveSheet.Shapes(Application.Caller). _
    TextFrame.Characters.Text
    Sheets(BTN).Select


この箇所は、

    BTN = ActiveSheet.Buttons(Application.Caller).Caption
    Sheets(BTN).Select

としても同じです。

一つのデータを取得するのに複数の記述方法がある場合があります。
 

>BTN = ActiveSheet.Shapes(Application.Caller). _
>    TextFrame.Characters.Text
>の意味を知りたくて、質問にしました。
Excel95以前は、
ボタンを扱う場合は、ActiveSheet.Buttons というオブジェクトを通して
ボタンの操作を行ってきました。

Excel97以降に新しくShapeという図形全体を表すオブジェクトが登場し、
このShapeオブジェクトのプロパティを取得していくことで
全ての図形(コントロールを含めて)の操作が可能になりました

Shapeオブジェクトの登場で機能も新しく追加された(様々な設定できめ細かい指定が可能)のですが、

使いにくい点もあります。
ActiveSheet.Shapes(Application.Caller). _
    TextFrame.Characters.Text

ActiveSheet.Buttons(Application.Caller).Caption

ボタンにある文字列を取得するのに記述がShapeは長いよね!!


実際には、旧オブジェクトとShapeをTPOによって、使い分けることが良いと思います。
どのように使い分けるかは、経験です。

TextFrameは、文字列を含んだ図形の表示レイアウトに関する情報・設定が
行えるオブジェクトですが、詳細は、Helpで調べてください。

9 hits

【69506】コマンドボタンから各シートへ がんば 11/7/25(月) 14:56 質問
【69507】Re:コマンドボタンから各シートへ ichinose 11/7/25(月) 17:27 発言
【69513】Re:コマンドボタンから各シートへ がんば 11/7/26(火) 11:30 質問
【69514】Re:コマンドボタンから各シートへ ichinose 11/7/26(火) 21:11 発言
【69528】Re:コマンドボタンから各シートへ がんば 11/7/28(木) 16:49 質問
【69529】Re:コマンドボタンから各シートへ neptune 11/7/28(木) 18:04 発言
【69530】Re:コマンドボタンから各シートへ ichinose 11/7/28(木) 20:52 発言
【69533】Re:コマンドボタンから各シートへ がんば 11/7/29(金) 9:37 お礼

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