|
こんばんわ。
>>コントロールの方のボタンからだと、また変わるんだろうか?
>これもやってみたら、なにを選択しても、「Range」が返ってきました。
これはコマンドボタンのTakeFocusOnClickプロパティがTrueになってるから
みたいやね。
Falseにすれば"ChartObject"になります。
興味深い内容やったんで、いろいろ実験してみました。(2003で実験)
--------------------------------------------------------------------------
[準備]
1.グラフを1個配置したシートにコマンドボタンを2個配置する。
2.Commandbutton1(ボタン1)はTakeFocusOnClick=True(デフォルト)
Commandbutton2(ボタン2)はFalseに設定する。
3.各ボタンにプロシージャは設定しない。
4.フォームツールバーのボタン(ボタン3)を1個配置し、下記マクロを
登録する。
Sub test()
MsgBox TypeName(Selection)
End Sub
[確認1]
1.グラフを選択(黒ハンドル)する。(=グラフコマンドバーが表示される)
↓
2.ボタン1をクリック。
↓
3.ボタン1にフォーカスが移り、グラフ選択が解除(=グラフコマンドバーが
非表示となる)される。
↓
4.再度グラフを選択。
↓
5.最初の状態に戻る。
[確認2]
1.グラフを選択(黒ハンドル)する。(=グラフコマンドバーが表示される)
↓
2.ボタン2をクリック。
↓
3.ボタン2にはフォーカスは移らない。
グラフの黒ハンドルは消えるが、グラフコマンドバーは表示されたまま。
(ただし、一部のボタンは使えない)
↓
4.再度グラフを選択。
↓
5.グラフオブジェクトが選択状態になる。(白ハンドル)
--------------------------------------------------------------------------
で、最初の"Range"が表示される件について考えてみました。([確認1])
TakeFocusOnClick=Trueの状態で、コマンドボタンをクリックすると、
コマンドボタンにフォーカスが移り、グラフのSelect状態は解除されるけど、
コマンドボタンは編集モード以外では「選択」できへんですわなー
つまりSelectionが無い状態になってまいます。
こういう場合はSelectionは「RangeSelectionプロパティが参照してるセル範囲」
を返すってことやと考えればええように思います。
これは、グラフを選択した状態から
Private Sub CommandButton1_Click()
On Error Resume Next
MsgBox Selection.Address
End Sub
なんてことをやれば確認できます。
次に黒ハンドルが白ハンドルに変わってまう現象について考えてみました。
([確認2])
コマンドボタンを押すとグラフのSelect状態は一見解除されたように見えるけど、
実は解除されてないようです。
グラフコマンドバーは表示されたままやし、この状態でイミディエイトで
?TypeName(Selection) ってやったら、"ChartObject"が返りました。
せやから、この時点ですでにオブジェクト選択状態に変化してるという
ことやと思います。
フォームツールバーのボタンで実行したら
>実行したあとは、黒い四角が、白い四角に変化してました。
ってのは、上記確認2と同じパターンやね。
これもマクロを登録したボタンは「選択」できへん(クリックするとマクロを
実行するのみ)からなんとちゃうかな?
--------------------------------------------------------------------------
[確認3]
1.ボタン2に下記イベントマクロを設定する。
Private Sub CommandButton2_Click()
MsgBox TypeName(Selection)
End Sub
↓
2.グラフを選択(黒ハンドル)する。(=グラフコマンドバーが表示される)
↓
3.ボタン2をクリック。
↓
4."ChartObject"と表示される。
↓
5.メッセージを消すと、確認2の3の状態になる。(一見選択対象が無い状態)
ちょっとわからんのは、フォームツールバーのボタンの場合は、マクロ終了後に
自動的にグラフオブジェクトの選択状態(白ハンドル)になるんやけど、
コマンドボタンの場合は一見選択対象が無い状態になってまうことです。
Private Sub CommandButton4_Click()
MsgBox TypeName(Selection)
Selection.Select
End Sub
ってやってもだめ。
Private Sub CommandButton4_Click()
MsgBox TypeName(Selection)
Selection.Activate
End Sub
にしたら、何故かChartArea選択状態(黒ハンドル)になってまいました・・・
なんだかわけわからんねー(^^;;
長文のごみレスですんまへーん。
ほな。
|
|