• 締切済み

エクセル2003 全セル選択ボタンについて

いつも回答していただき、とても感謝しております。 マクロで全セルのロックを解除して、列行の削除のみ不可にする記述を作成しました。マクロは問題なく完了するのですが、マクロで保護を設定したシートの全セル選択ボタンを押し、右クリックすると、しばらくフリーズしてしまいます。 (ちなみに、マクロの記述は会社保有のPC内ですので、記載することができません。) たぶん、右クリックしたときに、全セルの状態を確認しにいく為だと思うのですが・・・。 そこでフリーズしないようにするために、全セル選択ボタンをマクロ実行後使用不可にしようと思うのですが、どのようにマクロで記述すればいいのでしょうか?ネットで検索しましたが、まったく記載されていないので困っています。 ご指導お願いします。

みんなの回答

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

>マクロで全セルのロックを解除して、列行の削除のみ不可にする記述 >右クリックしたときに、全セルの状態を確認しにいく為だと思うのですが・・・。 >そこでフリーズしないようにするために、全セル選択ボタンをマクロ実行後使用不可に  そんな事をせずとも、単に、保護の内容を >列行の削除のみ不可にする に変更するだけで済む話ではないでしょうか? Sub QNo9132256_エクセル2003_全セル選択ボタンについて() Dim myPass As Variant myPass = Application.InputBox("パスワードを入力して下さい", "Password", , , , , , 2) If myPass = False And myPass & "" <> "0" And IsNumeric(myPass) Then Exit Sub On Error GoTo BadPassWord ActiveSheet.Unprotect Password:=myPass On Error GoTo 0 ActiveSheet.Protect Password:=myPass, _ DrawingObjects:=False, Contents:=True, Scenarios:=False, AllowFormattingCells:=True, _ AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowInsertingColumns:=True, _ AllowInsertingRows:=True, AllowInsertingHyperlinks:=True, AllowSorting:=True, _ AllowFiltering:=True, AllowUsingPivotTables:=True ActiveSheet.EnableSelection = xlNoRestrictions Exit Sub BadPassWord: MsgBox "パスワードが違います", vbExclamation, "無効なパスワード" Exit Sub End Sub

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

https://groups.google.com/forum/#!topic/microsoft.public.jp.excel/rQ97bdvYSr0 のような記事が見つかりました。あくまで参考です。 Application.onkeyで+A(Ctrl+A)を察知して、自分のルーチンに持ってこようとやってみましたが、すでにシステムで定義されているためか、当方のルーチンに来ません。 ーー こういうエクセルシステムで定義されている操作は、多数あるわけですが、それらの1つ1つを禁止するという設定は、VBAレベルではできないと思います(代表的と考えられたものは取り入れられていますよね)。そういう指定したものを使えなくする設計思想を組み込んでないと思う。VBAを作って社員等に提供しているシステム担当者レベルでも、そういうニーズはあると思いますが、そこまでエクセル(VBA)に期待するのは、アプリの設計の想定外でしょう。Excelは自分で自分のために使うソフトから始まっていて、必要のないものは使わないはずということでしょうが、他人が使うと使ってしまう場合が起こりえますよね。 私は素人で想像すが、エクセルのもっと深いレベルの仕組みとAPIなどを勉強していじらないと、手が付けられないでしょう。 他の発想の手段はないのでしょうか。