エクセルのテキストボックスの保護で文字列のロックをするには?

解決


アキ  2004-08-18 18:23:56  No: 115744  IP: [192.*.*.*]

はじめまして、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

編集 削除
Dental  2004-08-18 18:34:57  No: 115745  IP: [192.*.*.*]

この場合は、
  With xlSheet.Shapes("Text Box 10")
だと思います。試して見てください。

Selectしてから、Selectionを操作するというのは、VBでいえば、
  TextBox1.SetFocus
  With ActiveControl
    .Text = "123"
  End With
のような意味になり、無駄が多いです。

それと、「With Selection」のようなコーディングだと、
Excelが終了しない(非表示のまま残ってしまう)原因にもなります。

編集 削除
アキ  2004-08-18 18:52:51  No: 115746  IP: [192.*.*.*]

Dentalさん
早速のご回答頂き大変ありがとうございました。

Dentalさんがお教えどおりやってみましたところ
.LockedText = False の行でエラーが発生し、
オブジェクトはこのプロパティまたはメソッドをサポート出て
いませんというメッセージが出ました。
これはテキストではなく、図形(Shape)であるためなのでしょうか?

たびたびお聞きして申し訳ありませんがよろしくお願いいたします。

'-----------------------------------
With xlSheet.Shapes("Text Box 10")
     .Locked = True
     .LockedText = False '←ここでエラーが発生
End With

編集 削除
特攻隊長まるるう  2004-08-19 09:36:45  No: 115747  IP: [192.*.*.*]

『.(ピリオド)』を打った時点でインテリセンス(入力候補の表示)があると思いますが、
基本的に、そこに表示されてないものは"用意されてない"という事です。
>これはテキストではなく、図形(Shape)であるためなのでしょうか?
テキスト?…でもとりあえずそうです。Shape のメソッドには LockedText プロパティは
存在しません。

オブジェクトブラウザで検索すれば分かりますが、LockedText プロパティは
Excel.ControlFormat のメンバです。
    With xlSheet.Shapes("Text Box 10").ControlFormat
とかでいけませんかねぇ?…ただ、今度は Locked プロパティが Excel.ControlFormat
のメンバじゃない気がしますが…(汗)

編集 削除
アキ  2004-08-19 09:47:40  No: 115748  IP: [192.*.*.*]

特攻隊長まるるうさん。
ご回答頂き、ありがとうございました。

まだオブジェクトブラウザなどの検索の仕方もままならなくて
申し訳ありません。
今後もより理解を深めるため、勉強してまいります。

編集 削除
魔界の仮面弁士  2004-08-19 09:54:53  No: 115749  IP: [192.*.*.*]

テキストボックスの種類にもよりますが、
[図形描画]ツールバーにあるテキストボックスの事であれば、

With objSheet.TextBoxes("Text Box 1")
   .Locked = True
   .LockedText = True
End With

とも書けるかと。

編集 削除