ここから本文です

初めまして エクセルVBAについて質問です。 下記のようなVBAを作成しました。 ...

cur********さん

2018/7/3010:58:35

初めまして
エクセルVBAについて質問です。

下記のようなVBAを作成しました。

データは下記からダウンロード頂けます。

https://yahoo.jp/box/jLqzFu

「ベースデータ」シートの
B列「営業A」「営業B」・・・ごとに別シートに振り分けるようになっています。


Private Sub Worksheet_Activate()
Range("b8").CurrentRegion.SpecialCells(xlCellTypeVisible).Clear
With Sheets("ベースデータ")
.AutoFilterMode = False
.Range("B6:K6").AutoFilter
.Range("B6:K6").AutoFilter Field:=1, Criteria1:="営業A"
.Range(.Range("b6"), .Range("b6").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Range("b7")
.AutoFilterMode = False
End With
End Sub

最終的に「ベースデータ」シートに「シートの保護」をかけたいです。
※データ水色部分を保護したい為。

現状、保護すると上記VBAが実行できません。

上記実行時に保護を外し、完了時に再度保護するようにできないでしょうか?

どなたかご教示お願いいたします。

閲覧数:
49
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

ann********さん

2018/7/3011:58:18

営業Aと営業Bのシートモジュールに書き足したらいかがでしょうか。

With Sheets("ベースデータ")
の次に
.Unprotect
の1行を
End With
の前に
.Protect
の1行を、それぞれ追加します。

パスワードを使用されているのでしたら、
.Unprotect Password:="パスワード"

.Protect Password:="パスワード"
のように。

なお、
ActiveSheet.Protect Password:="パスワード", UserInterfaceonly:=True
を実行してシート保護すると、いちいち解除・再保護しなくともマクロからは編集できるようになります。
ただし、UserInterfaceOnly:=True で保護しまま保存した場合、次にそのブックを開いたときにはマクロによる操作も保護されますので、読み込み時に Auto_Open などで UserInterfaceOnly:=True を実行するなどの対応が必要です。

  • 質問者

    cur********さん

    2018/7/3014:10:10

    ann*****様

    早速のご回答ありがとうございます。

    ご教示どおりできました。
    その2行で出来るんですね。
    ありがとうございます!

    今回はパスワードなしですが
    今後パスワードありの場合も出てきそうなので
    参考にさせて頂きます。

    ご丁寧な内容でご教示頂き、
    本当にありがとうございました。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2018/7/30 14:12:25

コメントにも記載いたしましたが

パスワードの有無に合わせて
丁寧にご教示頂き、解決だけでなく
今後の参考にもさせて頂けましたので
ベストアンサーとさせて頂きます。

ありがとうございました。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる