Gizport
1 回答
0
Share (facebook)
2633
view
全般

エクセルのマクロです。シートを保護してセルをロックするとこのマクロが...

エクセルのマクロです。シートを保護してセルをロックするとこのマクロがうまく働きません。具体的な解決策を教えてください。 この質問をご覧のマクロに詳しい方々へ

お世話になります。
下記の内容のマクロを組み、図のような配布用のデータ表を作っております。

ここで
イエロー部分はセルのロックをせず、配布先で自由に入力できるようにとしたいと思っています。
水色の部分は計算式が入っていますので、セルにロックをかけて配布先でさわれないようにしたい(イエロー以外の部分にはロックをかけて使用したい)のですが、

現在のマクロでは、水色部分のセルにロックをかけ、イエロー部分のセルへ数値の入力をすると
「RangeクラスのNumberFormatLocalプロパティを設定できません」とエラーがでてしまいます。

このマクロ、ロックをしなければ希望どおり動いてくれるのですが、、、

どのように変えたら水色部分(イエロー部分以外)のセルにロックを掛けた状態でうまく動いてくれるでしょうか。

わかりにくい文章で申し訳ありませんが
よろしくご教示くださいませ。


Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, j As Long, r As Long
Dim i As Long, k As Long
j = Cells(Rows.Count, 7).End(xlUp).Row
If Intersect(Target, Range("G:O")) Is Nothing Then Exit Sub
For i = 2 To j Step 2
For k = 7 To 15
With Cells(i, k)
If .Value <> 0 Then
.Offset(1).NumberFormatLocal = "(#,##0);(-#,##0)"
Else
.Offset(1).NumberFormatLocal = "#,##0;-#,##0"
End If
End With
Next k
Next i
End Sub


画像が見えにくい場合は、こちらへ。ヤフーフォトへのリンクです。
http://photos.yahoo.co.jp/ph/snowboarder_g5/vwp?.dir=/4afa&.dnm=bb28.jpg&.src=ph&.view=t&.hires=t
Yahoo!知恵袋 4875日前
コメントする
お気に入り
1
質問者が選んだベストソリューション
1 シートのプロテクトを解除してNumberFormatLocalプロパティを変更してプロテクトを掛ける。
最初のforの前でacrtivesheet.unprotect 最後のnextの後でactivesheet.protect
必要があればパスワードも

2 シートのプロテクトを掛けるとき「セルの書式設定」を許可するにチェックする。
のどちらかをすればいいのでは。
2の場合は配布先で書式が変更される可能性は残ります。
Yahoo!知恵袋 4873日前
シェア
 
コメントする
 

参考になったと評価
  このQ&Aは参考になりましたか?

Share (facebook)
その他の解決方法を知っていますか?
回答する
全般
78
Views
質問者が納得1 シートのプロテクトを解除してNumberFormatLocalプロパティを変更してプロテクトを掛ける。 最初のforの前でacrtivesheet.unprotect 最後のnextの後でactivesheet.protect 必要があればパスワードも 2 シートのプロテクトを掛けるとき「セルの書式設定」を許可するにチェックする。 のどちらかをすればいいのでは。 2の場合は配布先で書式が変更される可能性は残ります。
4875日前view78

取扱説明書・マニュアル

1737view
http://www.fujitsu-general.com/.../ope-13_9319220024-01_rc_22-25-28-40-56.pdf
もっと見る

関連製品のQ&A