| 
    
     |  | ▼テラ さん: おはようございます。
 
 >テキストボックスを入力不可にすることがでました。
 解決後ですが、気がついた点を記述しておきます。
 >
 >ユーザフォームとツールボックスでは、Lockedの意味が違ってたんですね・・・。
 >それにしても、なぜなんでしょう・・・。
 私は、バグだと思いますけどね!!
 
 新規ブックのシートSheet1に「コントロールツールボックス」の
 テキストボックス(TextBox1)ひとつ配置してください。
 
 標準モジュールに
 
 '=================================================================
 Sub test1()
 With Worksheets("sheet1").TextBox1
 .Locked = Not .Locked
 End With
 End Sub
 '=================================================================
 Sub test2()
 Dim txt As MSForms.TextBox
 Set txt = Worksheets("sheet1").TextBox1
 txt.Locked = Not txt.Locked
 End Sub
 '=================================================================
 Sub test3()
 Dim txt As Object
 Set txt = Worksheets("sheet1").TextBox1
 txt.Locked = Not txt.Locked
 End Sub
 
 
 プロシジャーtest1〜test3で、
 
 TextBox1の入力制御ができているのは、
 
 test2だけなんです。
 
 test1とtest3は、OleobjectのLockedプロパティを更新しています。
 
 どれも同じコードに見えますけどね!!
 
 
 バグだと思いませんか??
 
 以下のようにした場合には、
 
 '=================================================================
 Sub test4()
 With Worksheets("sheet1").OLEObjects("TextBox1").Object
 .Locked = Not .Locked
 End With
 End Sub
 '=================================================================
 Sub test5()
 Dim txt As MSForms.TextBox
 Set txt = Worksheets("sheet1").OLEObjects("TextBox1").Object
 txt.Locked = Not txt.Locked
 End Sub
 '=================================================================
 Sub test6()
 Dim txt As Object
 Set txt = Worksheets("sheet1").OLEObjects("TextBox1").Object
 txt.Locked = Not txt.Locked
 End Sub
 
 test4〜test6いずれも
 
 TextBox1の入力制御ができました。
 
 コントロールツールボックスのコントロールも
 オブジェクト名の直接指定より、Oleobjectのコレクションを通しての
 指定のほうが間違いが少ないのでしょうかねえ?
 
 |  |