[[20150519212712]] 『ユーザーフォーム テキストボックスの文字が取得』(より) ページの最後に飛ぶ

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

 

『ユーザーフォーム テキストボックスの文字が取得できない。』(より)

先輩方のお知恵を拝借したく、書き込みさせて頂きます。

質問内容:ユーザーフォーム テキストボックスの文字が取得できない。
OS:Windows7
アプリケーション:EXCEL2010
ファイル形式:EXCEL97-2003 ブック(.xls)

■■■■■■■■基本の動作■■■■■■■■■■

1) ファイルを開いたら、テキストボックスが現れ
  入力待ちの状態になる

2) 5文字の数字(品番コード)を入力してもらい、
  入力内容をメッセージボックスで表示。

  以降、入力→表示を繰り返し。

  ※コードは0から始まることもある(例:01234)
   のでString型で宣言しました。

■■■■■■■■例外の動作■■■■■■■■■■

3) テキストボックスが右上の(X)で閉じられた場合は

  別途シート上に作成したフォーム「ボタン」を押せば
  再び同じテキストボックスが現れ
  入力待ちの状態になる。

4) 5文字の数字(品番コード)を入力してもらい、
  入力内容をメッセージボックスで表示。

  以降、入力→表示を繰り返し。

「問題(ご質問したい内容)」

基本の動作:1) - 2) は、思ったとおりの動きをするのですが、

例外の動作:一度、テキストボックスを閉じ、シート上の
フォーム「ボタン」を押して、再びテキストボックスを表示させた場合

5文字の数字を入れても何も起こらず、メッセージボックスが表示されません。

しかし、全角モードにしてから、5文字の数字入れてENTERを押すと
反応し、それ以降、何もなかったかのように、1) -2) の
思ったとおりの動きになったこともあります。
(この部分いろいろ試してみたのですが、どうもパターンが読めません。)

どのようにすれば、解決できるか、ご教示頂けませんでしょうか。

以下、コードです。

Private Sub Workbook_Open()

UserForm1.Show vbModeless

End Sub

Sub TextBox1_Change()

  Dim Mynumber As String

    Do Until Len(TextBox1.Text) = 5
    DoEvents

    Loop

    Mynumber = UserForm1.TextBox1.Text

    MsgBox "入力された数字 = " & Mynumber

  TextBox1 = ""

End Sub

Sub ボタン5_Click()

UserForm1.Show vbModeless

End Sub

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 Change イベントの中でループしてはまずいのでは?

 Sub TextBox1_Change()
    If Len(TextBox1.Text) < 5 Then Exit Sub
    MsgBox "入力された数字 = " & UserForm1.TextBox1.Text
    TextBox1.Text = ""
 End Sub
 のようにしてもダメでしょうか。

(Mook) 2015/05/19(火) 23:30


Mook様

ご指導ほんとうにありがとうございます。

頂戴したアドバイスを本日事務所で試してみて、改めてご報告させていただきます。

(より) 2015/05/20(水) 07:31


Mook様

本日、アドバイスいただいた内容を試したところ、全て解決して驚いています。

本当に助かりました。ありがとうございます!

(より) 2015/05/20(水) 20:15


コメント返信:

[ 一覧(最新更新順) ]


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