マクロを使った計算表を作って他の人に利用してもらっています。
計算を進める際途中経過をH~Z列までを使って計算し、その結果をA~G列を表示しています。途中経過のH~Z列やA~G列の計算式は見せたくないため、非表示にしたのち保護してあります。利用者は図表をコピーして利用できるよう、コピーが可能になるようにコピー禁止はしておりません。
ところが計算シート全体を他のシートにコピペすると、隠したはずのH~Z列を含むすべての列およびA~G列の計算式がすべて表示されてしまいます。
有料・無料の保護ソフトを試しましたが、どれもうまく作動してくれません。
そこでVBを使えばうまくできるものかと考えました。VBは全く分かりませんが6.0の環境は整っています。
当面のやりたいことは、コピペをした際に保護が破られないだけのことなのですが、VBを使えばそれが可能か否かを教えていただけませんか。可能ならばコードもお教えいただければ大変ありがたいです。
よろしくお願いします。
No.12
- 回答日時:
外野が失礼
AN10-11にスレ主さんは 誤解があるようです。
セル式に =関数(A1,B1,C1)として(必要なセル番地の値のみ関数に渡す)
標準モジュールに 関数(A,B,C) で、セル式の数値を受け取る、そして、セル式の計算式をコードで書けば、見えるシートの =関数 を見ても、参照セル番地が分かるだけで、VBAに書いた計算式は 見えないのだから、目的は達しているハズ・・・
VBにこだわっておられるようですが、VBでやるなら、標準モジュールに書いたその関数をVBでやるだけで、エクセルからVBに渡す手順が 面倒なだけ。かつ、
VBでやると、配布の時にインストール作業という、もっと面倒が増えますよ。
この辺が、エクセルは必要な部品一式(DLLなど)インクルードして、配布できますが、VBはコードだけで、必要DLLは 含まれませんから、インストールでDLLを相手のPCに移す面倒な手間が有りますよ。
2014itochan様
VBにこだわっている訳ではないのですが、それを使えば初期の目的が達せられるのかと思い、質問させていただきました。どうも見当違いのようでした。
一方市販のエクセルアドインを使用したソフトを見ると、シートの保護およびブックの保護がされていません。
ですから必要な計算は全部VBAの中でされているものと思われます。
皆様のおかげでだんだんやるべき方向が見えてきました。ありがとうございました。
No.10
- 回答日時:
No.1 をもっと簡単な汎用性のあるものを使ったら良いかもしれません。
修正箇所は減りませんが変更内容は簡単です。標準モジュールに
-----------------------------------------------
Function ひつじ(x)
ひつじ = x
End Function
-----------------------------------------------
※ もちろん「ひつじ」は関数と同じにならなければ適当なアルファベットに変更してもいいです。
☆ 使い方
「=A1+B1」と式が入っていたら「=ひつじ(A1+B1)」とするだけです。(「ひつじ(」と「)」を追加するだけです)
GooUserラック 様 No.9、10に関して
おかげさまでセルの式を表示させなくなりましたが、依然としてシートおよびブックの保護が外れ、隠したはずの列が表示されてしまう問題が残ります。
No.8
- 回答日時:
「VBを使えばそのようなことができるのかどうかです」とは「シートのコピーとかを禁止出来るか?」と言う事ならば、先ほどの機能呼び出すだけで同じ事しか出来ません。
「右クリックメニュー」を出さない事は出来ますが、メニューやリボンの方のコピーとかは出来てしまいます。GooUserラック 様
「VBを使えばそのようなことができるのかどうかです」は少しあいまいな表現で申し訳ありません。
「そのような・・・」とは、質問欄に記した内容です。すなわち、
1.コピペはできる
2.コピペしても式の内容が表示されず、かつシートおよびブックの保護が外れない。隠したはずのH~Z列は隠れているということです。
やはりVBを使ってもそのようなことはできないですかね。
No.7
- 回答日時:
No.6 へのお礼に関して
もう一度確認しておきますが、セルの書式設定で「ロック」「表示しない」にチェックを入れた状態でシート保護をかけると全選択・列選択・行選択のどれでも、コピーは出来ますが、式ではなく結果のみコピーされます。
この状態で「シートの移動またはコピー」を行うと確かに式ごとコピーされてしまいすが、ブック保護をかけると「シートの移動またはコピー」が選択できなくなりませんか?
シートの保護ですが
「シートとロックされたセルの内容を保護する」にチェック
このシーへとすべてのユーザーに許可する操作は
「ロックされたセル範囲の選択」「ロックされていないセル範囲の選択」のみチェックを入れた状態になっていますか?
GooUserラック 様
度々のご教示誠にありがとうございます。
’’もう一度確認しておきますが、セルの書式設定で「ロック」「表示しない」にチェックを入れた状態でシート保護をかけると全選択・列選択・行選択のどれでも、コピーは出来ますが、式ではなく結果のみコピーされます。’’
//確かに結果のみコピーされます。しかしシートおよびブックの保護は外れており、隠したはずのH~Z列を含むすべての列が表示されてしまいます。これを表示させないようにしたいのです。//
’’「ロックされたセル範囲の選択」「ロックされていないセル範囲の選択」のみチェックを入れた状態になっていますか?’’
//ハイ、そのように設定しております。//
No.4
- 回答日時:
VBAを使わなくてもおそらくやりたいことは可能だと思います
おそらくですが、こういうことでは?
1.ユーザーが入力するセルを設ける
2.途中演算セルは作成者や管理者のみが見られるようにしたい
3.出力セルはユーザーがコピーして用いたい
そこに、非表示にしても範囲コピーをすると非表示セルがコピーできてしまうエクセルの仕様があって上手く望んだ形にできない
と言うことでしたら、以下の画像のようにすればいいと思います。
シートの保護はパスワードをつけてください
strum_f 様
検証に手間取りまして遅くなり、失礼しました。
おっしゃるようにすると入力を許可した部分のみ、コピペできます。
しかしこの計算表の利用者は計算結果をレポートとして利用する場合、計算結果のセルのみでなく、計算条件の部分もコピペしたいのです。
No.3
- 回答日時:
VBではなく VBAですね.
(No.1の回答の方のユーザ関数も含めて)VBAが私も一番いいと思います.
とりあえずの解決としては,
作業用のセルは別シートにして,結果だけ表示用のシートにする とか.
結果のシートで計算式を見ても,他のシートへの参照(=Sheet2!A1 みたいに)でるだけですから.
tantanmm様
ありがとうございます。
私も作業用のセルを別シートにするのが良いと考えますが、構成上それが簡単にはできないので困っております。
VBAでシート保護をかけているのですがコピペができてしまいますし、他のサイトでもそういうように記されています。
例えば
http://detail.chiebukuro.yahoo.co.jp/qa/question …
https://oshiete.goo.ne.jp/qa/4602628.html
なのでVBを使ったら解決できるのならそうしたいと考えております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) シートが違う2枚のエクセルシートにある数値を別シートにコピーしたい(VBA?) 8 2022/03/31 12:24
- フリーソフト OpenOffice 表計算で文字としてコピペ 2 2023/05/31 11:11
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) エクセル/列追加時、合計行の計算式 7 2023/03/15 11:14
- その他(IT・Webサービス) 高速処理可能な表計算ソフトについて ExcelやGoogleスプレッドシートのような表計算ソフトで、 2 2023/04/29 16:06
- Excel(エクセル) エクセルで値ではなく関数を参照する方法 6 2023/03/19 00:50
- Excel(エクセル) Excelで、あるセルだけ入力させたい、オートフィルターも使わせたい際のシートの保護 2 2023/02/23 15:14
- Excel(エクセル) エクセルでSUMIFS関数で条件範囲の部分が#valueになる。 4 2023/04/28 12:42
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- その他(自然科学) 論文のまとめに関して(小論文)添削お願いします。 6 2023/07/16 14:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
【ExcelVBA】全シートのセルの...
-
セルの値によって、シート見出...
-
エクセルのシート名変更で重複...
-
VBA 検索して一致したセル...
-
シートが保護されている状態で...
-
ExcelVBA シート名を複数セルか...
-
ブック名、シート名を他のモジ...
-
エクセルで特定のシートのみ自...
-
Excel マクロについての相談
-
エクセル・マクロ シートの非...
-
エクセルのマクロについて教え...
-
実行時エラー1004「Select メソ...
-
vbaで複数のキーを元に集計する...
-
エクセル マクロのこの意味教えて
-
ExcelのVBAコードについて教え...
-
エクセルのマクロについて教え...
-
XL:BeforeDoubleClickが動かない
-
エクセル vbaにて 他シート(複...
-
【Excel VBA】シート表示、非表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
実行時エラー'1004': WorkSheet...
-
ExcelVBA シート名を複数セルか...
-
XL:BeforeDoubleClickが動かない
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
【Excel VBA】Worksheets().Act...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報
1~6まで、種々のご指摘をいただきましてありがとうございます。
ただ私がお聞きしたいのは、VBを使えばそのようなことができるのかどうかです。
VBに取り組むべきかどうかを考えたいのです。
よろしくお願いします。