[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/08/20(Sun) 16:14
投稿者名:ムーニー
Eメール:
URL :
タイトル:
各コントロールのIndexを取得することは可能でしょうか?
こんにちわ。いつもお世話になっております。

タイトルにも書きましたが、各コントロールのIndex(TabIndexの値など)を取得する
ことは可能ですか?アクティブなコントロールが何であるかとを判別できますでしょうか。

スプレッドコントロールがあって、3つのボタン(「作成」、「クリア」、「閉じる」)が
あるアプリで、スプレッドのLeaveCellイベントで入力チェックを行っています。
スプレッド上でたとえば”A/B/C”のようにスラッシュが2個以上ある場合はエラーとして
メッセージを表示する処理をLeaveCellイベントに書きました。

ですが、この場合、「クリア」ボタンや「閉じる」ボタンを押したときにもエラーMSGが
表示されちゃいます。これは使い勝手が悪いので、「クリア」、「閉じる」にフォーカスが
遷移したときはエラーチェックが入らないようにしたいのですが。。。

可能でしょうか。

投稿時間:2006/08/20(Sun) 18:39
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 各コントロールのIndexを取得することは可能でしょうか?
ここの逆引きヘルプの すべてのコントロールへ一度にアクセス  アクティブ
コントロールを調べるには  等をご覧下さい。

同様の方法で取得する事ができるかと思います。

投稿時間:2006/08/20(Sun) 23:30
投稿者名:ムーニー
Eメール:
URL :
タイトル:
Re^2: 各コントロールのIndexを取得することは可能でしょうか?
> ここの逆引きヘルプの すべてのコントロールへ一度にアクセス  アクティブ
> コントロールを調べるには  等をご覧下さい。
>
> 同様の方法で取得する事ができるかと思います。

花ちゃん 様

アドバイスありがとうございます。
しかし、拝見させて頂きました逆引きヘルプではコントロールまでは把握できますが
申し上げました「クリア」ボタンや「閉じる」ボタンの判別まではできません。

その他、応用できるものはございますでしょうか。

投稿時間:2006/08/20(Sun) 23:32
投稿者名:ムーニー
Eメール:
URL :
タイトル:
Re^3: 各コントロールのIndexを取得することは可能でしょうか?
花ちゃん 様

大変失礼しました。すべてのコントロール〜の方をまだ
確認しておりませんでした。

投稿時間:2006/08/20(Sun) 23:54
投稿者名:ムーニー
Eメール:
URL :
タイトル:
Re^2: 各コントロールのIndexを取得することは可能でしょうか?
花ちゃん 様

何度も何度も書き込んですみません。
一通り試してはみたのですが、やはりどうしてもコントロール名までしか
取得できませんでした。
コントロール名の一歩先のオブジェクト名を取得できないものでしょうか。

投稿時間:2006/08/21(Mon) 08:03
投稿者名:
Eメール:
URL :
タイトル:
Re^3: 各コントロールのIndexを取得することは可能でしょうか?
横から失礼します

> コントロール名の一歩先のオブジェクト名を取得できないものでしょうか。
この「オブジェクト名」は当初の質問の範疇に無いように思いますが、
一体どういう観点から生まれた疑問ですか?

※コントロール名=FormにロードされたコントロールのNameプロパティ…なのか…
 …オブジェクト名はもしかしてクラス名なのかな?

投稿時間:2006/08/21(Mon) 08:17
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: 各コントロールのIndexを取得することは可能でしょうか?
> コントロール名の一歩先のオブジェクト名を取得できないものでしょうか。

インデックスNo とアクティブコントロール が取得したかったのでは。
貴方が言っている[一歩先のオブジェクト名]とは何を指しているのですか? 具体例を
上げて説明して下さい。
ひょっとして、.TabIndex のような プロパティ の事ですか、それなら下記のようにして
取得できませんでしたか?

Private Sub Command1_Click()
    Dim i As Long
    On Error Resume Next
    For i = 0 To Controls.Count - 1
       Debug.Print Controls(i).TabIndex
       Debug.Print Controls(i).Caption
    Next i
End Sub

投稿時間:2006/08/21(Mon) 15:26
投稿者名:ムーニー
Eメール:
URL :
タイトル:
Re^4: 各コントロールのIndexを取得することは可能でしょうか?
言葉足らずで申し訳ありませんでした。

たとえば、スプレッドのセルから「クリア」ボタンを
押下した際に、LeaveCellイベントが走りますが、
その時に次にフォーカスが当たろうとしているのが
「閉じる」ボタンなのか、「クリア」ボタンなのか
ということを確認したいんです。

↓ こんな感じ

スプレッド上から、「クリア」ボタンをクリック

Private sub vaSpread_LeaveCell(〜)

  'フォーカスが「閉じる」ボタンOR「クリア」ボタンの場合
 ’当処理を抜ける
 
End sub

すみません。次元の低い文章で。。。

投稿時間:2006/08/21(Mon) 18:37
投稿者名:matsu
Eメール:
URL :
タイトル:
Re^5: 各コントロールのIndexを取得することは可能でしょうか?
> たとえば、スプレッドのセルから「クリア」ボタンを
> 押下した際に、LeaveCellイベントが走りますが、
> その時に次にフォーカスが当たろうとしているのが
> 「閉じる」ボタンなのか、「クリア」ボタンなのか
> ということを確認したいんです。
>
> ↓ こんな感じ
>
> スプレッド上から、「クリア」ボタンをクリック
>
> Private sub vaSpread_LeaveCell(〜)
>
>   'フォーカスが「閉じる」ボタンOR「クリア」ボタンの場合
>  ’当処理を抜ける
>  
> End sub

「閉じる」ボタンOR「クリア」ボタン以外にフォーカスが移る場合に
チェックをしたいという事であれば、Validateイベントと併用してみては
どうでしょうか?

LeaveCellイベントで他のコントロールにフォーカスが移る場合は
チェックせずに、Validateイベントでチェックすれば期待する動作に
なるかと思います。

投稿時間:2006/08/21(Mon) 22:42
投稿者名:ムーニー
Eメール:
URL :
タイトル:
Re^6: 各コントロールのIndexを取得することは可能でしょうか?
> LeaveCellイベントで他のコントロールにフォーカスが移る場合は
> チェックせずに、Validateイベントでチェックすれば期待する動作に
> なるかと思います。

了解です。やってみます!お返事ありがとうございます。