- ベストアンサー
エクセルをシートの保護をするとエラーが出る。
いつもお世話になります。 先日より VBAの記述を教えて頂きエクセルワークシートを作成しましたが (指定の色に色分けするVBA記述でした。)作業をしていると関数を入れているセルを消してしまう問題が発生しました。 その場合 シートの保護をして必要以外のセルを操作出来すれば良いと思い実施してみました。 しかし、VBAを走らすと ”実行エラー’1004’:InteriorクラスのColorIndexプロパティを設定出来ません”とメッセージが出てしまいます。何か良い手だてはありませんか お忙しところ申し訳ありませんが よろしくお願い致します。
- mimio0
- お礼率87% (7/8)
- オフィス系ソフト
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
そのマクロで、「シート保護の解除」と「シートの保護」を実行すればどうでしょうか。 「シートの保護」と「シート保護の解除」操作を「マクロの記録」すれば必要なコードが得られます。
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 VBAの基本としては、Protect メソッドに、UserInterfaceOnly をTrue にすれば、VBAからは操作できるようにします。 (Excel のVersion はありませんが、Excel 2003 までだとお見受けしました。) しかし、 >作業をしていると関数を入れているセルを消してしまう問題が発生しました。 その場合 シートの保護をして必要以外のセルを操作出来すれば良いと思い実施してみました。 http://oshiete1.goo.ne.jp/kotaeru.php3?/qa4422960.html エクセル数値の色分け それは、まったく別問題です。シートの保護をした状態で、VBAで変更を可能にするようにしたら、その数式は保護されません。20種類の数値の色分けをどのようなするのかは知りませんが、ご自身で、完全なコードを書けるなら別ですが、きちんとした規則性を示して、コードを書いてもらわないと、思ったようにはいかないと思います。前回は、mimio0さんがある程度わかっていると思っていたので、回答者さんたちは、省いた部分があります。
お礼
有り難う御座いました。
関連するQ&A
- 【エクセル】「実行時エラー’1004’ InteriorクラスのColorIndeXプロパティを設定できません。」とは?
いつもお世話になってます。 マクロの記録で、シートの何箇所かの指定した部分のセルの色を白色にして印刷するマクロを作ったのですが、シートを保護すると自動で白色にしますが、印刷しません。 エラーの表示は、 「実行時エラー’1004’ InteriorクラスのColorIndeXプロパティを設定できません。」 です。 デバッグというところを押すと、 記述の「Selection.Interior.ColorIndex = 2」という部分が黄色くなっていました。 解消するにはどうすればよいのでしょうか? どうぞご教示のほどよろしくお願いします。 【エクセル2003】
- ベストアンサー
- オフィス系ソフト
- エクセル2003 シートを保護するとマクロエラー
sub macro1() worksheets("Sheet2").copy before:=worksheets(1) with worksheets(1) .range("D4:BH14").interior.colorindex = xlnone .range("D16:BH21").interior.colorindex = xlnone .printout end with application.displayalerts = false worksheets(1).delete application.displayalerts = true end sub 以前に、こちらの質問で回答をいただきました。 会社のプリンターは古すぎなのですが、 見事!なんとか、会社のプリンターでできました。 入力されたくないセルもあり、シートを保護しました。 すると、マクロにエラーがかかりました。 なるべく、触られたくないセルがあったり、データを入力してほしいデータもあり… セルの保護をかけながら、マクロを有効に動かしたく思います。 よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- シートの保護をしたり、しなかったりはマクロで可能?
VBAでマクロを使って一部セルの変更をしているのですが このマクロを実行しない(ボタンを押さない)場合は、シートのセルが 変更できないようにシートの保護をかけています。 この状態で、マクロを実行すると 実行時エラー '1004' FontクラスのNameプロパティを設定できません。 と表示されます。 マクロ時は書き換えできて、マクロが実行していない場合、シートの書き換えができないようにしたいのですが、どのようにすればよいのでしょうか?
- ベストアンサー
- Visual Basic
- Excelの条件付き書式設定とワークシート関数
Excelのシート上で条件付き書式設定により、セルに色を 付けるようにしています。また、VBAでワークシート関数 を作りこみ、そのシートである色で塗りつぶされたセル の数を数えるようにしています。 このとき、条件付き書式設定によりセルに色が付いてい る箇所は、ワークシート関数によって塗りつぶしの色と して認識されないようです。 ワークシート関数で「ある色」かどうかを判定するの は、Interior.ColorIndexを使用しています。条件付き 書式設定によってセルの色が付いている箇所は、このプ ロパティ値が-4142になっています(つまり、「塗りつぶ しなし」とみなされている)。 条件付き書式設定で色が付けられる状態のまま、ワーク シート関数で塗りつぶしの色が認識できるようにする方 法はあるのでしょうか? 分かりましたら教えてくださ い。
- ベストアンサー
- Visual Basic
- エクセル、シートの保護について
関数が入っているセルに保護を掛けました。 B10からには「氏名」を入力します。(セルの保護は掛かっていません) C10からには「金額」を入力します。(セルの保護は掛かっていません) そして、B10:C600で「並べ替え」をしたいのですが、シートに保護が掛かっているのでできません。 このような状態で並べ替えは無理なのでしょうか。 もし、VBAででも出来るのでしたら、教えていただけないでしょうか。
- ベストアンサー
- オフィス系ソフト
- Excelシート上のボタンでセルの背景色を設定する
シート上のボタンを押したときにセルの値と背景色を設定したいのですが、エラーになります。 原因・解決策が分かる方お願いいたします。 Private Sub CommandButton1_Click() With Range("A1") .Value = "Yellow" .Interior.ColorIndex = 6 '実行時エラー1004:InteriorクラスのColorIndexプロパティを設定できません。 End With End Sub 環境 Excel97/Win98
- ベストアンサー
- Visual Basic
- シート保護をすると実行エラーになります。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("A1:A2000")) Is Nothing Then Exit Sub With Selection.Interior If .ColorIndex = xlNone Then .ColorIndex = 4 Else .ColorIndex = xlNone End If End With Cancel = True End Sub A列任意のセルをダブルクリックすると色が変わるコードを組んでいます。しかしながら、 A列のみロックを解除したのち、シート保護をすると、上記の実行がエラーになります。 どのようにすればエラーを回避できるのかお知恵をかしていただければ幸いです。
- ベストアンサー
- オフィス系ソフト
- シートの保護について
Excel2000のVBAについて質問です。 シートの保護をした状態で、可視セルを範囲指定しよう思い下記コードを 実行すると、シートの保護の解除を求められます。 Range("A1:A65536").SpecialCells(xlCellTypeVisible).Select シートの保護をしたまま、可視セルを指定することはできないのでしょう か?
- ベストアンサー
- Visual Basic
- EXCELで4色の色をつけるVBA(既存)を最後のシートまで実行するには?
エクセルのVBAで質問です。 現在、下記のVBAにて、エクセルに4色の色をつけています。 内容 ・処理範囲内(D5:AI50)の列の値が、 ・指定した行(4行目)の値から見て、 ・+5、+10、-5、-10の場合、それぞれ指定した色をつけています ・ただしC列の値が30未満の行は色付けなし 現状では、このマクロはアクティブシートのみで使えるため、 100シートあれば、それぞれのシートにおいて そのつどマクロを実行しています。 これを、一度の実行で最終シートまで実行できるようにしたいのです。 VBA初心者のため、見よう見まねでループを試してみたものの、 どうもうまく動きませんでした。 なにとぞご教授のほど、お願いいます。 ●以下、現在使用しているVBA Sub 条件付4色の標本数1() Dim 処理範囲 As Range Dim 先頭の行番号 As Long Dim 全体の行数 As Long Dim 各セル As Range Dim 差分 As Single Dim 標本数 As Single Set 処理範囲 = Range("D5:AI50") For Each 各セル In 処理範囲 標本数 = Cells(各セル.Row, "C").Value If 標本数 >= 30 Then 差分 = 各セル.Value - Cells(4, 各セル.Column).Value Select Case 差分 Case Is <= -10 各セル.Interior.ColorIndex = 37 'ペールブルー 各セル.Font.ColorIndex = 1 Case Is <= -5 各セル.Interior.ColorIndex = 34 '薄い水色 各セル.Font.ColorIndex = 1 Case Is >= 10 各セル.Interior.ColorIndex = 6 '黄37 各セル.Font.ColorIndex = 1 Case Is >= 5 各セル.Interior.ColorIndex = 19 '薄い黄 各セル.Font.ColorIndex = 1 Case Else 各セル.Interior.ColorIndex = xlNone '無色 End Select End If Next End Sub
- 締切済み
- オフィス系ソフト
お礼
有り難う御座いました上手く出来ましたのでお礼を申し上げます。