[[20170327115115]] 『ユーザーフォームの大きさ変更』(キセノン優勝) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ユーザーフォームの大きさ変更』(キセノン優勝)

お世話になっております。

ユーザーフォーム上にボタンを一つ配置して
一度クリックすると大きくなって、もう一回クリックすると元に戻るという
感じです。

Private Sub UserForm_Activate()

    UserForm1.Height = 400
End Sub

Private Sub CommandButton1_Click()
If UserForm1.Height = 400 Then

    UserForm1.Height = 500
Else
    UserForm1.Height = 400
End If

End Sub

ボタンクリックしても変化しない時とするときが
あるみたいでクリックと正しく連動できるよう
指摘頂けたらと思います。
※クリックを早く押すと反応しないっぽいです。。。

< 使用 Excel:unknown、使用 OS:unknown >


  やま勘ですけど、Exit Sub の直前に

  DoEvents

 を入れたらどうですか?

(半平太) 2017/03/27(月) 12:29


他のコマンドボタンでも同様の症状が出ますでしょうか?
このコマンドボタンだけでしょうか?
一度ユーザーフォームの何もないところをクリックしてユーザーフォームにフォーカスがある状態でコマンドボタンをクリックしたらどうなりますか?
(カリーニン) 2017/03/27(月) 12:38

半平太様
いれてみましたが反応は変わりませんでした。

気が付いたのですが、
初歩ですがボタンのダブルクリックイベントのには何も書いていなかったので
ダメみたいでした。以下のように追記したら解決っぽいです。

Private Sub CommandButton1_Click()

If UserForm1.Height = 400 Then

    UserForm1.Height = 500
Else
    UserForm1.Height = 400
End If
DoEvents     ’←半平太様指摘の追記
End Sub

'↓↓以下追記↓↓
Private Sub CommandButton1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If UserForm1.Height = 400 Then

    UserForm1.Height = 500
Else
    UserForm1.Height = 400
End If
End Sub

(キセノン優勝) 2017/03/27(月) 13:10


 >初歩ですがボタンのダブルクリックイベントのには何も書いていなかったので 
 >ダメみたいでした。以下のように追記したら解決っぽいです。 

 ふつうは、ダブルクリックというイベントは使いませんよねぇ・・・
 クリックで反応せず、ダブルクリックで反応する?

 何か、べつの要因があると思いますよ。

 じゃないと、すべてのボタンクリックのイベントをダブルクリックで書かなければいけないことになりますから。
 そんなコード、まず、見かけないですねぇ。

(β) 2017/03/27(月) 16:45


β様 回答ありがとうございます。

やっぱりダブルクリックイベントは使いませんよね。。。

私はクリックを早くしても遅くてもクリック1回に対し1回クリックイベントさえ動けば
よいと思っています。

しかし
ボタンをカチカチっとダブルクリックすると
クリックイベント1回
ダブルクリックイベント1回動いているようです。
下記のコードで試してみた結果です。

Private Sub CommandButton1_Click()

   Debug.Print 1
End Sub
Private Sub CommandButton12_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
   Debug.Print 2
End Sub
としたら、イミディエイトには
1
2

となっていました。

当初は


となると思っていたのです。
解釈が間違っていたらスミマセン。

ということで今はこういう風にしています。。
Private Sub CommandButton1_Click()

  If UserForm1.Height = 400 Then 
      UserForm1.Height = 500
  Else
      UserForm1.Height = 400
  End If
  DoEvents     ’←半平太様指摘の追記
End Sub

Private Sub CommandButton1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

  CommandButton1_Click
End Sub

(キセノン優勝) 2017/03/27(月) 17:09


2回クリックしたつもりでも、クリック間隔が素早くて、
ダブルクリックと判定されているんではないですか?

その場合、キセノン優勝さんが検証されたように、

クリック、ダブルクリック、

の順でイベントが1回ずつ発生するのですが、これを
クリックイベントが2回発生すると期待しているとしたら、
2回目の分が発生しないので「あれ?」と思っているのでは
ないでしょうか。
(春男) 2017/03/28(火) 13:33


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.