

ExcelのVBAでマクロを組んでいます。編集可能な範囲指定で、AllowEditRangesというのがありますよね。複数シートにAllowEditRangesで同じ範囲、同じタイトルで指定したとき、最初につけたタイトルに”_1”という文字が後ろについてしまいます。
この範囲は作業を終了したときに削除したいので、AllowEditRanges("編集可能範囲").Deleteとしても、削除できないシートがあるので調べてみると、タイトルが"編集可能範囲_1"となっているのです。編集可能とする範囲を複数作成した場合、タイトルを指定して削除したいのですが、どうやら自動的に名前が変わってしまうようです?なぜでしょう?インディックスで指定しても、それが何番目になっていて、どんな名前になっているかわからない場合はどうしたらいいのでしょう?
作業グループを作成し、ActiveWindow.SelectedSheets.Protection.AllowEditRanges(1).Delete
ActiveWindow.SelectedSheets.Protection.AllowEditRanges(2).Delete
これだと、インディクス2でエラーになってしまいます。なぜでしょうか?
No.1ベストアンサー
- 回答日時:
こんにちは。
ご質問が良く分からない部分があります。
問題は、「作業グループを作成し、」というところです。なぜ、作業グループを作成してから、Protection.AllowEditRange を設定させるのでしょうか?マクロで、シートを別々にして設定させればよいのではありませんか?「作業グループ」というのは、原則的には、ワークシート上で3-D(串刺し)処理をすることです。VBAの場合は、さほどタイムロスを感じないと思います。
それと、今度は削除する場合ですが、いくつか範囲の編集の許可した領域があって、その中から、編集可能範囲を削除するのか、それとも全部削除してしまうのか、そこらによってコードが変わってくるように思います。
削除は、全部削除するようになっています。
'-----------------------------------
'サンプルマクロ
'-----------------------------------
Sub ProtectArrowEditRng()
'設定
Dim Sh As Worksheet
For Each Sh In ActiveWorkbook.Worksheets
Sh.Protection.AllowEditRanges.Add "編集可能範囲", Sh.Range("A1:A10")
Next Sh
End Sub
'-----------------------------------
Sub ChekerProtectAllowEdRange()
'全部削除
Dim Sh As Worksheet
Dim pt As AllowEditRange
For Each Sh In ActiveWorkbook.Worksheets
Sh.Activate 'これを入れないと削除しない
If Sh.Protection.AllowEditRanges.Count > 0 Then
For Each pt In Sh.Protection.AllowEditRanges
pt.Delete
Next pt
End If
Next Sh
End Sub
'-----------------------------------
'補足(部分削除する場合)
Sub ChekerProtectAllowEdRange2()
'部分削除
Dim Sh As Worksheet
Dim pt As AllowEditRange
For Each Sh In ActiveWorkbook.Worksheets
Sh.Activate
If Sh.Protection.AllowEditRanges.Count > 0 Then
For Each pt In Sh.Protection.AllowEditRanges
'タイトルに条件を入れれば、名前に合うものだけを削除します。
If pt.Title Like "編集可能範囲*" Then
pt.Delete
End If
Next pt
End If
Next Sh
End Sub
>ActiveWindow.SelectedSheets.Protection.AllowEditRanges(2).Delete
>これだと、インディクス2でエラーになってしまいます。なぜでしょうか?
AllowEditRanges(2) インデックスというのは、順序のことですから、一つ消せば、中身は、(1)となります。
pt.Title Like "編集可能範囲*" Then ・・・
という部分で対処できるようになりました。
作業グループを作成しているのは、作業したいシートが可変であるため、まずグループ化しないとシートが限定できないからです。インディックスが1つ消せば中身は(1)となるかと思ったんですが、(1)の分を2行連続で書いてもエラーだったため質問しました。どうもお世話になりました、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで下の空白行を削除したい
-
指定した文字があった場合、そ...
-
もう関わりたくない人がいたらL...
-
Yahooフリマってどれくらい時間...
-
今日の日付が過ぎたらその行を...
-
VBA:Openステートメントで開い...
-
告白してフラれた相手の連絡先...
-
Excel VBAマクロで実行時エラー...
-
変な検索エンジンdelta-search.com
-
アクセスにおいて間違って削除...
-
これのどこが削除対象になるの...
-
Windows11に残されたWindows10...
-
YouTubeの初期音量が最大になり...
-
【ExcelVBA】指定のシート以外...
-
mp3の埋め込み画像の削除ができ...
-
勝手に消えた質問
-
自分で投稿したものを消すには...
-
GoogleフォトとiPhoneを同期し...
-
メーリングリストから特定の人...
-
【Excel】エクセルの論理式につ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Yahooフリマってどれくらい時間...
-
指定した文字があった場合、そ...
-
VBA:Openステートメントで開い...
-
告白してフラれた相手の連絡先...
-
もう関わりたくない人がいたらL...
-
Windows11に残されたWindows10...
-
nProtectの削除について(PSO2削除)
-
アクセスにおいて間違って削除...
-
喧嘩をしてLINE削除され、 また...
-
バッチファイルを使用したsql@p...
-
エクセルVBAで行削除時にエラー...
-
mp3の埋め込み画像の削除ができ...
-
メーリングリストから特定の人...
-
ATMに登録されている振込先を削...
-
Adobe AcrobatのPDFのページ削除
-
【エクセル】セル内の右側のみ...
-
Googleフォトでバックアップを...
-
gooIDを 誤って削除してしまい...
-
(Access)複数条件の重複デー...
-
今日の日付が過ぎたらその行を...
おすすめ情報