マクロとセル保護に関して。
いつも勉強させていただいています。
現在、勤務シフトを組む為エクセルを利用しています。
表に記載しているのはおおむねこのような感じです
1列目:勤務時間を表す番号(1=早出 2=遅出といった感じで番号のみを入れています)
2列目:勤務時間を関数で表示( =IF(E12=1,7.75,(IF(E12=2,7.75,(IF(E12=3,7.75,(IF(E12=4,14.75,(IF(E12="有",7.75,(IF(E12="明",0,))))))))))) )これで1列目に1という数字が入った場合、7.75となり横計に数字を用いています。
これがスタッフの人数分あります。
1列目で1という番号が打ち込まれた際には緑色、3という番号が打ち込まれた際には紫いろといったマクロを使用しています。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myColor As Integer
If Target.Count > 1 Then Exit Sub
Select Case Target.Value
Case 5
myColor = 38 'ローズ色
Case 2
myColor = 40 'ベージュ色
Case "明"
myColor = 36 '黄色
Case 1
myColor = 35 '緑色
Case 4
myColor = 34 '青色
Case 3
myColor = 39 'ラベンダー
Case "有"
myColor = 37 '緑色
Case "F"
myColor = 43 'ライム
Case "6"
myColor = 17 'コーラル
Case Else
myColor = xlNone
End Select
Target.Interior.ColorIndex = myColor
Target.Font.ColorIndex = 0
End Sub
上記のようにコードを記入しています。
さて。
1列目は月により変更するために、毎回打ち込めるようにしておきたいのですが
2列目は1列目の数字を受けて変更されますよね。
2列目を保護し、打ち込めないようにした場合、1列目に数字を入れると
実行時エラー’1004’:
アプリケーション定義またはオブジェクト定義のエラーです
と出てしまいます。
デバックを見ると
Target.Interior.ColorIndex = myColor
この部分にマークが入ります。
いろいろと調べつつ直そうとしたのですが、私ではわからなくなってきたのでどなたかお手すきの方がいらしたら、教えていただければと思います。
お礼
有難うございます。型番で検索したら確かに有りました。生産終了、残念です。