Excel VBA質問箱 IV

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

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


64234 / 76732 ←次へ | 前へ→

【17079】Re:コントロールは全て「Range」!?
発言  bykin  - 04/8/20(金) 23:54 -

引用なし
パスワード
   こんばんわ。

>>コントロールの方のボタンからだと、また変わるんだろうか?
>これもやってみたら、なにを選択しても、「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選択状態(黒ハンドル)になってまいました・・・
なんだかわけわからんねー(^^;;

長文のごみレスですんまへーん。
ほな。

2 hits

【17026】グラフのサイズを一定にするマクロ kT/q 04/8/19(木) 15:12 質問
【17034】Re:グラフのサイズを一定にするマクロ ni 04/8/20(金) 8:27 回答
【17038】Re:グラフのサイズを一定にするマクロ Jaka 04/8/20(金) 9:01 回答
【17040】Re:グラフのサイズを一定にするマクロ kT/q 04/8/20(金) 9:11 お礼
【17049】グラフの選択って・・・・ つん 04/8/20(金) 14:07 質問
【17051】でけました(^^; つん 04/8/20(金) 15:06 お礼
【17052】Re:グラフの選択って・・・・ Jaka 04/8/20(金) 15:07 発言
【17053】Re:グラフの選択って・・・・ つん 04/8/20(金) 15:12 お礼
【17054】Re:グラフの選択って・・・・ Jaka 04/8/20(金) 15:42 発言
【17055】Re:グラフの選択って・・・・ つん 04/8/20(金) 15:50 発言
【17056】Re:グラフの選択って・・・・ Jaka 04/8/20(金) 15:59 発言
【17057】Re:グラフの選択って・・・・ Jaka 04/8/20(金) 16:02 発言
【17058】Re:グラフの選択って・・・・ つん 04/8/20(金) 16:10 発言
【17061】Re:グラフの選択って・・・・ Jaka 04/8/20(金) 16:58 発言
【17063】コントロールは全て「Range」!? つん 04/8/20(金) 17:07 発言
【17079】Re:コントロールは全て「Range」!? bykin 04/8/20(金) 23:54 発言
【17099】Re:コントロールは全て「Range」!? つん 04/8/22(日) 12:55 発言
【17100】Re:コントロールは全て「Range」!? bykin 04/8/22(日) 14:06 発言

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