[[20041221200348]] 『切り取りができないようにしたいです』(コウ) ページの最後に飛ぶ

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

 

『切り取りができないようにしたいです』(コウ)

 リストの件では皆さん有難うございました。
 今度は上記の件、教えて下さい。
数式の入っているセルは保護がかかっているのですが、数式が参照している
セルを切り取りされてしまうと当然数式がおかしくなります。
「コピーはいいですが切り取りはしないで」とお願いしたところで守られません。
単語検索で下記がひっかかり、指示どおりThisWorkbookにコピーして試しましたが、
切り取りできてしまいます。 

[[20041206203715]]『コピーを出来なくする方法』(困った班長)

 どなたかお知恵をお願いします。


 マクロは分かりませんが、参照セルも保護しちゃうというのはダメですか?
 手作業だと、
 @ Ctrl+G >セル選択>「数式」にチェック>OK
 A この状態のまま、さらに Ctrl+G >セル選択>「参照元」「すべてのレベル」にチェック>OK
 で、参照元セルのすべてが選択されますので、これらのセルを保護(^^)
 (代奈)

 多分これのことであると推測しますが、
↓
【1】保護ではなくて、セル間の切り取り、コピー、貼り付け
を一切キャンセルしてしまうマクロ。
ThisWorkbookモジュールへ貼り付けます。
'//////////////////////////////////////////////////////////////////
 Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
 Application.CutCopyMode = False
 End Sub

 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
 Application.CutCopyMode = False
 End Sub

 Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
 Application.CutCopyMode = False
 End Sub
'//////////////////////////////////////////////////////////////////
切り取りはできます。ただし、
切り取りの動作そのものを抑制するものではなく、そのあとのほかのシート、
ほかのブックへの貼り付け動作を抑制するものです。従って、コピーもできません。
現実問題としては、「あれこれしてはいけない」は絶対に守ってくれないので、
移動されても有効な数式設計(セル参照を絶対参照、名前付セル範囲にするなど)
あるいはデータ入力だけですむような(計算のことまで考えさせない)
ブックデザインなどが必要かと思います。
(みやほりん)

 代奈さん有難うございます。でも切り取りして貼り付けると
やはり計算式の参照先が壊れてしまいした。
 みやほりんさん、切り取りできてしまったので動作しないと思いましたが、
貼り付けが出来なくなるんですね。
確認したら確かにコピーもできなくなってしまいます。
 切り取り限定にする事は出来ないんでしょうか?
切り取りとコピーとではCutCopyModeの戻り値が違うようなので。
ちょっとやってみたのですが、どうもうまくいきません。
 どうしても無理なら、ファイルを開く都度、正しい計算式を保存した行から
コピーし直すようにしようかと思います。
(コウ)

 強引にマクロで「切り取り」のショートカットメニュー、ツールバー上のボタン
 およびショートカットキーを無効にするとか・・

 自分でメニューを追加してまで、使う人はいないでしょう・・?

  (INA)

 正しく保護されていれば切り取れないはずです。
[[20041028124024]]
 この方法で、ロック後、シートまで保護されましたか?
 (代奈)

 代奈さん、何故出来ないんでしょう?参照式が入っているシートで行うんですよね?
データを入力するシートは別のシートなのがいけないんでしょうか?
 INAさんのおっしゃることができればベストですが、私にはその能力が
まだまだ足りないです。
これでもちょっとずつは成長していると思うのですが・・・
教えて欲しいです。
ちなみにファイル全体ではなく、あるシートでだけそういう設定もできるのでしょうか?
(コウ)

 うっ。。。(ーー;)
 な、何故できないんでしょうね。。。

 >参照式が入っているシートで行うんですよね?
 そう。。。てか、シートが違う???
 んんん、参照式って、違うシートを参照してるんですか?
 そうなると手作業では出来るのかしら(T_T)
 だって、あらかじめ名前がつけられていれば、参照元セルへジャンプできるけど、
 そうでなければ、「該当するセルが見つかりません」って出るよね(>_<)
 じゃぁ、先に名前をつければって話になるのでしょうけど、それってそれって。。。
 手作業じゃ、てか、私のスキルでは無理です(ーー;)

 やっぱり。。。VBAになるのでしょうか。。。
 (代奈@がっくり)

 > 切り取り限定にする事は出来ないんでしょうか?
 >あるシートでだけそういう設定もできるのでしょうか?
ということなので、下記のようにすれば可能であると思います。
シートモジュールへ下記コードを張り付け。

 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Application.CutCopyMode = xlCut Then
 Application.CutCopyMode = False
 End If
 End Sub
 
Win98Excel2000での検証で、切り取り動作の時のみFalse設定にされるのが
確認できました。
(みやほりん)

 みやほりんさん、有難うございました!!
書きたかったコードが能力不足でうまく書けてなかっただけなんですね。
似てるようで全然違うんですよね。自分でやるのは難しいです。
真似しながらちょっとずつ覚えているんですが
超初心者から抜け出せないです・・・

 代奈さんも有難うございました。VBAは難しいですよね。
でも代奈さんも私には遠い存在です。。。
これでも社内ではエクセル使える方なんだけどな。
でも関数だけでは足りないんですよね。機能もVBAも頑張ろうっ!!

(コウ)


コメント返信:

[ 一覧(最新更新順) ]


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