|
▼テラ さん:
おはようございます。
>テキストボックスを入力不可にすることがでました。
解決後ですが、気がついた点を記述しておきます。
>
>ユーザフォームとツールボックスでは、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のコレクションを通しての
指定のほうが間違いが少ないのでしょうかねえ?
|
|