• 締切済み

エクセルVBA シートの保護について

EXCEL2003 OS:XP お世話になります。 エクセルVBAを使い、列の表示・非表示の機能を使えないように制限をかけたいと思います。 シートの保護であるPROTECTメソッドを使うとできるようですが、 これだと列幅の調整もできなくなってしまいます。 AllowFormattingRows = false 列幅の調整は可能なままとして、列の表示・非表示のみ使えなくするような制限は可能でしょうか? 宜しくお願い致します。

みんなの回答

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

>列幅の調整は可能なままとして、列の表示・非表示のみ使えなくするような制限は可能でしょうか? できないように思う。 列幅を0にされたら列の非表示と一緒だし 以下独り言 うーーん、VBAで何とか 列の表示、非表示を変えたら間髪をいれずにもとに戻す! ここを捕まえるイベントないかな Worksheet_SelectionChangeでtargetが列を選択したときにその列を覚えておいて 次の選択時にその列がhiddenかどうかをチェックしてhiddenだったらもとに戻す。 またはすべての列の表示非表示を配列に覚えておいて、selection_changeのたびにもとに戻す。 仕様とは違うけど表示非表示がセルを移動するだけでもとに戻るから問題ないかな

tochou4848
質問者

お礼

回答おそくなってすいません。。 やっぱり簡単にはできないのですね、、VBAでできるとこまでやってみます。 ありがとうございました。

関連するQ&A

  • VBAで、シート保護のパスワードは利用可能ですか?

    VBAソース上で、シート保護で設定したパスワードを取得、使用することは可能でしょうか? ソースにパスワード文字列をベタ書きせずにすむなら、その方法をとりたいので教えてください。 例) 1.[Excelメニュー-シート保護]で、パスワードを設定 2.VBAで、以下のように「1.で設定したパスワード」を取得し、変数に代入 3.Protectメソッドでその変数を使用  VBAソース)  Dim pass As String  pass = 「1.で設定したパスワード」  ActiveSheet.Protect Password:=pass, UserInterfaceOnly:=True

  • EXCEL VBA 保護したシートを読込みしたい

    お世話になります。 EXCEL VBAで「データ」というシートあります。ここの100件ほどのデータが入っており、もう1つの「集計」というシートにフォームを作成してそのフォームからVBAを使って集計するのですが、この「データ」シートはユーザーにいじられたくないので保護もしくは非表示にしたいと思っています。 しかし「データ」シートを保護してしまうとVBAで「データ」シート読み込む際にエラーになってしまいます。 何かよい方法はありますでしょうか? 環境 WindowsXP SP3 Excel2003

  • EXCEL(VBA)でシート保護がかかったシートにクリックボードから貼り付けしたい

    EXCEL2000のVBAで、クリップボードにコピーしたデータ(複数のセル範囲)を、シート保護がかかった別のシートにコピーする操作を行ないたいと考えています。 手順としては「1.クリップボードにコピー」→「2.シート保護解除」→「3.貼り付け」→「4.シート保護」なのですが、下記マクロを作成して試してみたところ、2.のシート保護解除を行なった時点でクリップボードが空になるようで、「実行時エラー'1004':RangeクラスのPasteSpecialメソッドが失敗しました。」と表示され貼り付けができません。 これについて何か回避策はないでしょうか? Range("A1:C3").Select Selection.Copy Sheets("貼り付け先シート").Select ActiveSheet.Unprotect Range("A1").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True 以上、よろしくお願いします。

  • Excel2002"シートの保護"に関して

    Excel2002でシートで行や列を非表示にしてからシートの保護をかけています。 これを、範囲指定して新しいファイルにペーストなどした場合でもこの保護によって公開していない行や列を保護したままにすることは出来ないのでしょうか? "シートの保護"という機能で無いものを用いた解決でも構いません。どなたかご存知だったら教えてください。

  • ExcelVBAでシートの保護が出来ません

    お世話になります。Excel2000です。 VBAで、Protectを使用してシートを保護しようとしているのですが、 実行しても保護がされません。それだけでなく、その後に VBEでソースなどを確認しようとすると、「DLL読み込み時のエラーです。」という メッセージが表示されるほか、マクロが「記録できません」という 状況になってしまいます。 これはどうすればよろしいでしょうか。 ご返答、お待ちしております。 よろしくお願い致します。

  • ExcelでVBAにおけるシートの保護に関して・・・

    ユーザーフォームで入力した値がシートのセルに入力 されるというものを作っています。 そこで、シートの列挿入及び列削除を禁止しておきたい のですが、そのままシートを保護してしまうとユーザー フォームが開かなくなるので、VBAにてユーザーフォーム が開く前に保護を解除し、閉じるときに再び保護をかける ようにしました。 ただ、この方法だと、シート保護の項目全て(初期設定) に対して保護されてしまうため、例えば行挿入や行削除、 あるいはオートフィルタや並べ替えといったことまでが 出来なくなってしまいます。(手動で保護を解除すれば できるのですが、一々解除しなければならないのは面倒 なので何とか避けたいのです。) 禁止したいのは、列削除及び列挿入のみなのですが、 他によい方法はないでしょうか。

  • VBAでブック保護非保護を判定するには?

    エクセルVBAでブックが保護されているのかどうかを判定するにはどう書けばいいのでしょうか? If ActiveWorkbook.Protect Then ではだめでした。 また、シート保護の判定方法も教えてください。

  • Excelのバージョンの違いで VBA の実行エラー

    エクセル2003で、 VBAを使い、行を非表示にする ドグルボタンを作成し、 シート保護をし、行の書式だけ編集可能にし保護しました。 Range("63:67").EntireRow.Hidden = True Selection.EntireRow.Hidden = False というのを使用しました。  つまり、ドグルボタンで、列の表示と非表示をできるように しました。 しかしながら、あるユーザから、 ドグルボタンを押すと"実行エラー 1004"が表示される。 Range クラスのHidden プロバティを設定できません。 と表示されると報告がありました。 まるで、シート保護時に、列の書式にチェックをしなかった ような症状です。 よく聞いてみると そのユーザはExcel2000のユーザでした。 Excelのバージョンの違いによって生じたエラーなのでしょうか? わかる人教えてください。

  • EXCEL VBAで条件付き保護について

    VBA初心者です、よろしくお願いします。 列Eでオートフィルタを使用可能と設定したいので、下記のようにしましたが、「シートの保護を設定」のステップを終えた後オートフィルタも使用できません。 「AllowFiltering:=True」でEXCELのオートフィルタの使用にチェックを入れた状態になると考えていましたが、思うようになりませんでした。 「シートの保護を設定」のステップがおかしいと思うのですが、わかりません。 教えてください。 ------------------------------------------------------ Private Sub Auto_Open() '一旦、シート保護を解除 ActiveSheet.Unprotect Password:="AAA" 列Hのデータを重複データを無視で列Oに抽出 セルH2は「入力規則-リスト」~列Oのデータを使用   ・   ・   ・ ' シート保護を設定 ActiveSheet.Protect Password:="AAA", UserInterfaceOnly:=True, AllowFiltering:=True End Sub

  • エクセルVBAでブック保護のUserInterfaceOnly:=Trueはダメ?

    エクセル2000です。シート保護ならUserInterfaceOnly:=TrueでVBAでの変更は可能ですが、Book保護にもそういう機能はないのでしょうか?試しに、 Sub TEST1() ActiveWorkbook.Protect Password:="merlion" , UserInterfaceOnly:=True End Sub とやってみましたが、エラーになってしまいました。(泣)