Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Excel 2013)
シートを保護した状態での入力規制に関する質問
投稿日時: 19/06/30 15:16:41
投稿者: 猫かも

どなたかお知恵を貸してください。。。
 
会社で共有で使用しているファイルがあります。
Aの列には入力規制をかけており、
手動で下記のように設定しています。
 
・入力値の種類=リスト
・元の値=01:リンゴ,02:ミカン,03:ブドウ,99:
・無効なデータが入力されたらエラーメッセージを表示する=チェックを外す
 
実際の操作としては、A列のリストから該当の物を選択するのですが、
リストに無いものは「99:」を選択した後にダブルクリックして
「99:レモン」といった具合に「リストの値+手入力」をしています。
 
数人でファイルを入力するため、印刷レイアウトなどが崩れないように、
シートを保護することにしました。
 
入力を許可するセルを選択して(A列を含む)
セルの書式設定→保護→ロック=チェックを外す
とした上で、
 

Public Sub Auto_Open()
' 手入力によるシートの保護
    ActiveSheet.Protect UserInterfaceOnly:=True
End Sub

 
としました。
 
すると、A列でリストにある値しか選択できず、「リストの値+手入力」が
出来なくなってしまいました。
 
シートを保護しながらも、元のように「リストの値+手入力」を可能にするには
どのようにしたらよいですか?
 
お知恵を借りるにあたり、欠けている情報があればおっしゃってください。
どうぞよろしくお願いいたします。

回答
投稿日時: 19/06/30 17:43:49
投稿者: WinArrow
投稿者のウェブサイトに移動

> ActiveSheet.Protect UserInterfaceOnly:=True
の「UserInterfaceOnly:=True」引数指定は、手入力の場合、
あってもなくても関係ないが、
「99:」
は選択できますか?
ダブルクリックではなく、「F2」キーを押して入力できませんか?

回答
投稿日時: 19/06/30 17:47:06
投稿者: mattuwan44

入力規則のリストでの選択を止めて、
ActiveXコントロールのリストボックスを利用してはいかがでしょうか?
 
あるものを使わず、同じ機能を自作するのは車輪の発明のようですが、
入力規則のリストは、個人的に表示が小さくマウスでの選択がしいづらい印象です。
試してみてはないのでふあんですが、
99が選択されたなら(というかあえて番号を振る必要があるのか疑問ですが。)、
さらにテキストボックスを表示してもいいでしょうし、
該当セルを編集モードにするような制御もできるかなぁと思います。
 

回答
投稿日時: 19/06/30 17:58:47
投稿者: 半平太

シート保護されていると、ダブルクリックした心算りが、
実際はダブルクリックができない状態に陥っている様ですね。
※そもそもマウス形状が矢印型ではなく、手のひら型になっています。
  
(1)直接F2キーを押すか、
(2)右クリックイベントに"{F2}"のSendKeysを仕込んで置き、
  ダブルクリックに代えて、右クリックにしたらどうですか?
  (そのセルに入力規則があるかチェックするとか、
  CancelにTRUEをセットするとかは、その後の工夫で・・)
 

投稿日時: 19/06/30 18:10:58
投稿者: 猫かも

早々の回答、ありがとうございます!
 
「99:」 は選択できていたので、ダブルクリックをする代わりに
「F2」キーを押下することで解決しました。
 
他の社員から使いづらいとの声があった場合には、
右クリックに仕込む等、他の手段を検討したいと思います。
 
悩んでいたのがバカバカしくなるくらい早く解決して良かったです!
ありがとうございました(^^)