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

投稿時間:2005/10/14(Fri) 13:19
投稿者名:ダンボ
URL :
タイトル:
Excelコントロールには.hWndが無い
お騒がせします。Excel2002のVBAです。

コマンドボタン(や、その他のコントロール、フォーム)にhWndプロパティが無いらしいのですが
そうなんでしょうか?hWndの無いウィンドウというのは考えられないので、単に使用禁止にしているだけ?
グラフィックAPIを使うためにはhWndが必須なものが多いので、何とかならないものでしょうか?

下記のコードは、.hWndを参照したところで落ちます。
「実行時エラー438.オブジェクトはこのプロパティをサポートしていません」


Public Function MouseMove(CNT As MSForms.CommandButton, ByVal X As Single, ByVal Y As
Single)

With CNT
    If X >= 0 And X < .Width And Y >= 0 And Y < .Height Then
        .BackColor = vbYellow Or &HC0C0C0
        SetCapture .hWnd
    Else
        .BackColor = &H8000000F
        ReleaseCapture
    End If
End With
End Function

投稿時間:2005/10/14(Fri) 14:18
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: Excelコントロールには.hWndが無い
ウィンドウレスコントロールかと思います。
逆に、VB6.0 でもCD内にウィンドウレスコントロールが入っており使用できたはずです。


又、下記での回答でも触れておられますよ。

★ - VBAで「型が一致しません」 - ダンボ 09/15-18:33No.4421
hhttp://tinyurl.com/bddur



詳しくは、下記でも。
hhttp://tinyurl.com/dnhsd

投稿時間:2005/10/18(Tue) 10:55
投稿者名:ダンボ
URL :
タイトル:
【お礼】Excelコントロールには.hWndが無い
花ちゃんさん、どうも有り難うございます。

> ウィンドウレスコントロールかと思います。
理解が足りませんでした。薄々とは感じていましたが。

訂正:「.hWndの無いウィンドウというのは無い。VB/VBAコントロールで外見はウィンドウぽいけど
実はウィンドウではないものが存在しウィンドウレスコントロールと呼ぶ」
多分その親ウィンドウが一生懸命に擬似ウィンドウをハンドリングしているのだろう。

VB6では、
 ウィンドウを持つコントロール:
  TextBox
  CommandButton(VBAではウィンドウレスコントロールなんだ)
  PictureBox
 ウィンドウレスコントロール:
  Label(VB.netではウィンドウを持つコントロールに変わったらしい)
  Shape
  Image