[[20060119212042]] 『InputBoxの文字数制限』(Jupi) ページの最後に飛ぶ

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

 

『InputBoxの文字数制限』(Jupi)

あるマクロ(仮にmacro1とします)を実行するとInputBoxが表示され、
半角英数字で12文字入力された場合、別のマクロ(仮にmacro2とします)が実行される。
12文字入力される、またはキャンセルボタンを押すまで、再度InputBoxが表示される。

このようなmacro1を作りたいのですが、よろしくお願いします。


 インプットボックスで出来るのか判りませんので、ユーザーフォームのTextBoxでやってみました。

 ユーザーフォームを作り、TextBoxを二つ重ねておきます。
 
Private Sub TextBox1_Change()
With Me
    If Len(Me.TextBox1.Text) = 12 Then
        .TextBox1.Visible = False
        .TextBox2.Visible = True
        Range("A1").Value = .TextBox1.Text  '←ここに入力したものをどうするか記述
        .TextBox1.Value = ""
    End If
End With
End Sub
 
Private Sub TextBox2_Change()
With Me
    If Len(Me.TextBox2.Text) = 12 Then
        .TextBox2.Visible = False
        .TextBox1.Visible = True
                                            '←ここに入力したものをどうするか記述
        .TextBox2.Value = ""
    End If
End With
End Sub
 
Private Sub UserForm_Initialize()
With Me
    .Caption = "入力"
    .TextBox1.AutoTab = True
    .TextBox1.MaxLength = 12
    .TextBox1.IMEMode = 3
    .TextBox2.AutoTab = True
    .TextBox2.MaxLength = 12
    .TextBox2.IMEMode = 3
    .TextBox2.Visible = False
End With
End Sub

 (川野鮎太郎)


TextBoxを使うのですね。

他人が作ったマクロを使いやすくしようとコードを見ていたら、InputBoxの12文字がmacro2で実行される様々な処理のキーワードになっていることがわかりました。

元々macro1でInputBoxが使われていたので、このInputBoxで文字数制限を設けようとしていました。

早速TextBoxで挑戦してみます。ありがとうございました。

 (Jupi)


 『InputBoxの文字数制限のマクロ分を具体的に教えてください』(toshi)
 '←ここに入力したものをどうするか記述
というところをマクロ文を具体的に教えてください。
お願いします
Excel2002
WindowsXP


 続きの質問は同じスレッド内の下に追加してください。

>というところをマクロ文を具体的に教えてください。

 これは、Jupiさんが入力したものをどうしたいのかが判らないと、
 誰にも回答できませんよ。
 Jupiさんとtoshiさんって同じ方ですよね・・・。

 (川野鮎太郎)


川野鮎太郎様

教えていただいた方法で思い通り動作しました。ありがとうございます。

あと、私はtoshiさんと別人です。
更新時間が数分しか変わらなかったので間違われたのかと・・・。

 (Jupi)

 一応、InputBoxでできないものかと挑戦。
 Sub インプットボックス文字数制限()
     Rem TEST_20060121
     Dim MyStr As String
     Dim Flg As Boolean
     Do
         Flg = False
         MyStr = InputBox(Prompt:="12文字以内で入力", Default:=MyStr)
         Select Case Len(MyStr)
             Case Is <> LenB(StrConv(MyStr, vbFromUnicode))
                 MsgBox "半角文字で入力してください"
                 Flg = True
             Case Is > 12
                 MsgBox "12文字以内で入力してください"
                 Flg = True
             Case Is = 0
                 MsgBox "キャンセルまたは未入力のため終了します"
                 Exit Sub
         End Select
     Loop While Flg
     MsgBox StrConv(MyStr, vbNarrow)
 End Sub
 
(みやほりん)(-_∂)b


 なるほど、Do Loopですか・・・。
 Do Loopは過去に何回も無限状態に陥ったため、思考回路から切り離されているもので・・・(^_^A;

 ていうか、みやほりんさんのを試して判ったのですが、σ(^_^;)は根本的に質問の意味を
 取り違えていたようです。_/ ̄|○ il||li

 インストール時のシリアル番号入力のように、12文字を入力した時点で
 次の入力を行えるようにするものだと勘違いでした。(T▽T)アハハ!

 (川野鮎太郎)

 >12文字入力される、またはキャンセルボタンを押すまで、再度InputBoxが表示される。
ということなので、
             Case Is > 12
                 MsgBox "12文字以内で入力してください"
これはあやしいかもしれません。
(みやほりん)(-_∂)b

みやほりん様

ありがとうございます。InputBoxでもできるのですね。自分なりに場合分けをアレンジしようと思います。

川野鮎太郎様

今後はバーコードからの読み込み入力が増えてくるので、"12文字を入力した時点で"の方が使い勝手良さそうです。

TextBox、InputBoxを使い分けようと思います。本当にありがとうございました。

 (Jupi)

コメント返信:

[ 一覧(最新更新順) ]


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