重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

エクセルVBAについて

いつもお世話になっています。
今回教えていただきたいのは、エクセルのブックで並び替えの機能を制限する方法です。

複数で、使用しているブックがあり、並び替えの機能を、使わないよう周知しているにもかかわらず、並び替えを、行いデータが、ぐちゃぐちゃに、なるということが起こっており、困ってます。
そこで、並び替えの機能自体無効になれば良いのにと思い、質問させていただきました。
VBAで、そのようなコードが有れば教えていただきたいです。
よろしくお願いします!

質問者からの補足コメント

  • 説明が、足りておらず、すみません!並び替えとは、セルの並び替えの事です。

      補足日時:2020/02/28 12:09
  • ブック自体は工程表と言いますか、日々データを各自作業をした人が入力しています。並び替えを制限したい理由は、例えば日付順にしたくて、日付が入っている列を含む5行くらいのみ選択して並び替えとかしてしまっていて、全体のデータがバラバラに、なってしまうということが起こったりします。
    普通に考えたらそんな事しちゃダメなのはわかるはずなんですが、エクセル初心者もいますので、、、。

      補足日時:2020/02/28 12:56

A 回答 (9件)

#5.6です。


>VBAで、そのようなコードが有れば教えていただきたいです。
イベントなどで、、と思い調べてみましたが、難しいようです。実務的には、#4さんの回答にあるようにされるのが良いと思います。
データの扱いが今後どのようになるのか分かりませんが、入力とデータベースを分けて考えるのも必要かと思いますが、

VBAの興味として
>VBAで、そのようなコードが有れば教えていただきたいです。 
なので、お詫びを兼ね考えました。
VBAだけでは、ダメなのでリボンを操作します。内容は、#5のリンクで確認してください。エディタが入手可能ならエディタを使った方が簡単です。(画像参照)
XMLでリボンを無効にします。(customUI(xml)は、そのブックのみに機能します。)Excel2013で検証しました。

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/cust …
<commands>
<command idMso="SortDescendingExcel" enabled="false" />
<command idMso="SortAscendingExcel" enabled="false" />
<command idMso="SortDialog" enabled="false" />
<command idMso="SortFilterMenu" enabled="false" />
</commands>
</customUI>

この場合、右クリックにある並び替えは利用できるので、VBAなどで対策する必要があります。

入力作業にリボンなどを使用(限られたモノしか)しないなら、
方法としては、リボンの登録をカスタマイズして、操作を制限する方法などもあります。

戻りますが、並び替えを制限しても、行列セルの移動などをされれば、問題になると思います。
使用する人は、並び替えをした方が作業がやり易いからだと思いますので、
されても良いように変えた方が理にかなっていると思いますよ
例えばデータから、各自に合わせマクロで入力表を作成するとか、ですかね。
「エクセルVBAについて いつもお世話にな」の回答画像8
    • good
    • 0
この回答へのお礼

皆さま、VBAだけでなく色々な方法を、教えてくださり本当にありがとうございます!
漠然とVBAでできないかな?という考えで質問させていただきましたが、こんなに色々な方法があるということがわかりとても勉強になりました!
VBAもそうですが、データ管理の方法そのものの勉強も、もっとしていかなければなりませんね。
お一人お一人にお礼のコメントが出来ませんでしたが、皆様ありがとうございます!

お礼日時:2020/03/01 23:56

そもそも、なぜ並び替えをしたいのでしょうか?


ヒアリングしました?

そこから代替え案を考えたら?

これも立派なソリューションです。
    • good
    • 1

編集してほしい部分のセルロックを解除した状態で、パスワード付きでシート保護をするのはダメですか?

「エクセルVBAについて いつもお世話にな」の回答画像7
    • good
    • 1

#5です。


>保護や、シートチェンジイベントなど警告を出し処理を無効にすることも出来ますが、
>’ Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
全くの間違いです。構成変更やチェンジで捕まえられると勘違いしました。
やった事のない事は、良く確認をして投稿します。申し訳ございません。
    • good
    • 1

こんにちは、


意図しない事をされるとすぐ困る。VBAはそんなものです。

使用する方は、並び替えをした方が作業がやり易いのだと思いますので、
保護や、シートチェンジイベントなど警告を出し処理を無効にすることも出来ますが、
’ Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
ブックの構成自体を工夫するのはいかがですか?

例として 並び替えが出来るようなデータなら、外部にCSVで出しておき使用時にCSV抽出、変更時、終了時に最新版をCSV出力するとか
そうすれば、データは作成者の意図で構成できると思います。(CSVでなく非表示シートでも)

さらに、制限をするなら、アプリ的な考えで、リボン自体の構成を作成者の意図で制限(作成)するとか、、Excelの既存ボタン等を無効にするなど。
こちらは、少々知識と経験が必要になるかも知れません。(エディターも配布終わったみたいですが、情報サイトは増えました。)
https://thom.hateblo.jp/entry/2018/06/13/043244
    • good
    • 0

『Excelの初心者もいるから』ってのは理由にならないでしょ。


初心者だからこそ『やってはいけないこと』をキチンと指導し、それに従わないって事なら業務から外すなどの対応も必要なんじゃないの?

日々データを入力する事と日付順に並び変えてしまう事の関係が不明ですが、作業手順としてきちっと指導するか作業者を限定するかが良いのでは?
『並び替えができなくなった』→『なぜか並び替えが出来ないから元に戻したい』と質問→回答を得てBookを弄繰り回す・・・
って連鎖が続くのではないかと感じちゃいますけどね。

そのBookがメインのデータ管理であれば、バックアップは必要としても直接触れない管理構成を検討すべきでは?と思いますけどね。
    • good
    • 2

シートの保護とか?


内容の編集とかはしたいなら、すべてのセルのロックを外して許可する操作で並べ替えだけチェックをいれないでおくとか?
最終的に元の順になればいいならどこかの列に並び順を入れておいて非表示にしておくとか。

>見るだけならブックの保護でいいでしょ
ブックの保護はセルの編集を禁止する機能ではありません。使ったことあるのかな?
    • good
    • 0

いや、見るだけならブックの保護でいいでしょ。



みんな触るの?
何の目的のエクセルなの?
    • good
    • 0

ブックの保護で固定するという方法がありますが、これではダメでしょうか?



【EXCEL】ワークシートの並び順を固定する方法 | きままブログ
https://masagoroku.com/%E3%80%90excel%E3%80%91%E …
    • good
    • 0
この回答へのお礼

すみません!!ブックのシートの、並び替えではなく、セルの並び替えです!言葉足らずですみません!!

お礼日時:2020/02/28 12:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!