Excel VBA質問箱 IV

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

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


40205 / 76737 ←次へ | 前へ→

【41633】Re:ユーザーフォームのコントロールのイベント処理選択
発言  ichinose  - 06/8/17(木) 21:29 -

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

このExitイベントって、使いづらいイベントですよね!
帯に短し、襷に長しじゃなく、襷にも短し?

・neptuneさんのように仕様を思い切って変更するのも一案です。

・「条件に合うコードを入力する以外抜けられない状態になる」を仕様にする。

>ある意味不具合が発生してしまいます

とおっしゃっていますが、MS社のように正々堂々と仕様だと言い切る・・・。
↑これ、結構、真面目に言っています。
(私は、値切られた仕事ではこの程度のことは仕様だと言い切ります)


・独自イベントを作成して、コマンドボタンのクリックを可能にする。
 これも一案ですが、アクティブなコントロールを監視しなければならない。
 動作が不安定・・・・。


・仕様を変更するPART2



新規ブックで試してください。

ユーザーフォーム(Userform1)に
  テキストボックス(Textbox1)----7桁の数字入力用 必須入力
  テキストボックス(Textbox2)----データ入力用
  テキストボックス(Textbox3)----データ入力用
  コマンドボタン(Commandbutton1)--入力内容クリア用

の4つのコントロールを配置します。
(コントロールのTabオーダーも上記の記述順序です)

標準モジュールに

'====================================================
Sub main()
  UserForm1.Show
End Sub


Userform1のモジュールに
'============================================================
Private Sub TextBox1_Enter()
  txtenbl = False
End Sub
'============================================================
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  With TextBox1
    If KeyCode = 13 Then
     If (Len(.Text) <> 7) Or (IsNumeric(.Text) = False) Then
       KeyCode = 0
     Else
       txtenbl = True
       End If
     End If
    End With
End Sub
'============================================================
Private Sub CommandButton1_Click()
  Dim idx As Long
  For idx = 1 To 3
   Controls("textbox" & idx).Text = ""
   Next
  TextBox1.SetFocus
End Sub
'============================================================
Property Let txtenbl(ByVal enbl As Boolean)
  Dim idx As Long
  For idx = 2 To 3
   Controls("textbox" & idx).Enabled = enbl
   Next
  CommandButton1.Enabled = False
  CommandButton1.Enabled = True
End Property


として、mainを実行してみてください。

Textbox1には、7桁の数字を入力して、Enterキーを押さないと

次のTextbox2には、移動できません。
(7桁の数字を入力してもEnterキー押さないと移動は不可)

しかし、コマンドボタンのクリックは可能です。
  

これも一つの案です。

検討してみてください。

0 hits

【41630】ユーザーフォームのコントロールのイベント処理選択 ハナ 06/8/17(木) 15:11 質問
【41632】Re:ユーザーフォームのコントロールのイ... neptune 06/8/17(木) 17:38 回答
【41633】Re:ユーザーフォームのコントロールのイベ... ichinose 06/8/17(木) 21:29 発言
【41644】Re:ユーザーフォームのコントロールのイベ... ハナ 06/8/18(金) 8:25 発言
【41646】ユーザーフォームのコントロールのイベント... ハナ 06/8/18(金) 9:20 質問
【41647】Re:ユーザーフォームのコントロールのイベ... ichinose 06/8/18(金) 9:56 発言
【41650】Re:ユーザーフォームのコントロールのイ... ハナ 06/8/18(金) 10:34 お礼
【41653】Re:ユーザーフォームのコントロールのイ... neptune 06/8/18(金) 11:28 発言
【41657】Re:ユーザーフォームのコントロールのイ... ハナ 06/8/18(金) 14:18 発言
【41668】Re:ユーザーフォームのコントロールのイ... neptune 06/8/18(金) 21:50 発言

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