はじめまして、VB初心者です。
早速ですが、VBを使ってエクセル操作を行いたいのですが、
テキストボックスの保護の設定で文字列のロックをするには
どのようにしたらよろしいでしょうか?
以下のようにSelectしてからWithステートメント使えば一応
ロックすることはできましたが、2回目の実行では
エラーが出てしまいましたので、Setステートメントを
使用しようとしましたが、方法がわかりませんでした。
申し訳ありませんがよろしくお願い致します。
'----------------------------------
Dim xlSheet As Excel.Worksheet
xlSheet.Shapes("Text Box 10").Select
With Selection
.Locked = True
.LockedText = False
End With
この場合は、
With xlSheet.Shapes("Text Box 10")
だと思います。試して見てください。
Selectしてから、Selectionを操作するというのは、VBでいえば、
TextBox1.SetFocus
With ActiveControl
.Text = "123"
End With
のような意味になり、無駄が多いです。
それと、「With Selection」のようなコーディングだと、
Excelが終了しない(非表示のまま残ってしまう)原因にもなります。
Dentalさん
早速のご回答頂き大変ありがとうございました。
Dentalさんがお教えどおりやってみましたところ
.LockedText = False の行でエラーが発生し、
オブジェクトはこのプロパティまたはメソッドをサポート出て
いませんというメッセージが出ました。
これはテキストではなく、図形(Shape)であるためなのでしょうか?
たびたびお聞きして申し訳ありませんがよろしくお願いいたします。
'-----------------------------------
With xlSheet.Shapes("Text Box 10")
.Locked = True
.LockedText = False '←ここでエラーが発生
End With
『.(ピリオド)』を打った時点でインテリセンス(入力候補の表示)があると思いますが、
基本的に、そこに表示されてないものは"用意されてない"という事です。
>これはテキストではなく、図形(Shape)であるためなのでしょうか?
テキスト?…でもとりあえずそうです。Shape のメソッドには LockedText プロパティは
存在しません。
オブジェクトブラウザで検索すれば分かりますが、LockedText プロパティは
Excel.ControlFormat のメンバです。
With xlSheet.Shapes("Text Box 10").ControlFormat
とかでいけませんかねぇ?…ただ、今度は Locked プロパティが Excel.ControlFormat
のメンバじゃない気がしますが…(汗)
特攻隊長まるるうさん。
ご回答頂き、ありがとうございました。
まだオブジェクトブラウザなどの検索の仕方もままならなくて
申し訳ありません。
今後もより理解を深めるため、勉強してまいります。
テキストボックスの種類にもよりますが、
[図形描画]ツールバーにあるテキストボックスの事であれば、
With objSheet.TextBoxes("Text Box 1")
.Locked = True
.LockedText = True
End With
とも書けるかと。