[[20231221135814]] 『シートの保護とフォームコントロールボタン』(寒い) ページの最後に飛ぶ

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

 

『シートの保護とフォームコントロールボタン』(寒い)

よろしくお願いいたします。

Sheet1上にフォームコントロールボタンが3つあります。それぞれのボタンはSheet2上のボタンにテキスト名を入力させるものです。

Sheet1とSheet2に「シートの保護」を行い,いままで動いていたマクロを実行すると「ButtonクラスのCaptionプロパティを設定できません」というエラーが出てきます。

ネットで調べてみたところ,

ThisWorkbook.Worksheets("Sheet1").Protect UserInterfaceOnly:=True

があったので,それぞれのSubの先頭部分に書いたのですが,エラーになります。

良い解決策はありますでしょうか。

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


 エラ−の出る行、エラーメッセージを書いてください。
 エラーがでるだけでは情報不足です

 想像ですが、Sheet2 を変更しようとしているんだから、
 ThisWorkbook.Worksheets("Sheet2").Protect UserInterfaceOnly:=True
 じゃないとダメなのでは?
(´・ω・`) 2023/12/21(木) 15:51:58

(´・ω・`)さん

ありがとうございます。簡潔にお示しします。

Sheet1,Sheet2にそれぞれボタンが一つずつあります。Sheet1のボタンのテキストをSheet2のボタンのテキストに表示させ,Sheet3のB2の値を1増やすというものです。

特にSheet3のB2は勝手に変更されたくありません。エラーメッセージは以下の通りです。

「ButtonクラスのCaptionプロパティを設定できません」よろしくお願いいたします。

Sub test()

     Dim btn As Shape
     Dim myname As String

     Set btn = Worksheets(1).Shapes(Application.Caller)

     myname = btn.DrawingObject.Caption

     With Worksheets(2)
          .Shapes("button1").DrawingObject.Caption = myname
     End With

     With Worksheets(3)
          .Range("B2").Value = .Range("B2").Value + 1
     End With
End Sub

(寒い) 2023/12/21(木) 16:26:54


 >Sheet1上にフォームコントロールボタンが3つあります。
                                         ~~~~~~~~~~~
 >Sheet1,Sheet2にそれぞれボタンが一つずつあります。
                   ~~~~~~~~~~~~~~~~~~~~~~~~
 そんな寒い事を言っていたら、誰も回答をしてくれませんよ。
 自己解決されたのであれば良いですが...
(あみな) 2023/12/22(金) 13:03:42

 横入。
 ThisWorkbook.Worksheets("Sheet2").protect DrawingObjects:=False, UserInterfaceOnly:=True
 としてみては?これでキャプション変更が可能になります。

 ただ、これだと手動でもキャプションが変更できてしまいます。 
 これが不可なら、test()の中で、保護解除、作業、再保護 とするよりないでしょう。

(xyz) 2023/12/22(金) 13:30:17


xyzさん

いろいろと試してみたのですが,やはり最後に書かれたように,test()の中で、保護解除、作業、再保護しかありませんでした。

ありがとうございました。
(寒い) 2023/12/23(土) 11:36:38


コメント返信:

[ 一覧(最新更新順) ]


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