Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3978 / 13644 ツリー ←次へ | 前へ→

【58814】入力された内容を保護するには? 夜勤担当 08/11/12(水) 8:00 質問[未読]
【58817】Re:入力された内容を保護するには? Jaka 08/11/12(水) 10:44 発言[未読]
【58886】Re:入力された内容を保護するには? 夜勤担当 08/11/16(日) 13:18 質問[未読]
【58898】Re:入力された内容を保護するには? Jaka 08/11/17(月) 13:27 発言[未読]
【59086】Re:入力された内容を保護するには? 夜勤担当 08/11/27(木) 12:22 お礼[未読]

【58814】入力された内容を保護するには?
質問  夜勤担当  - 08/11/12(水) 8:00 -

引用なし
パスワード
   お早うございます。

 入力された内容を保護するには、どうしたらよういのか?分からなくて、回答を
求めたいと思って、投稿しました。
よろしくお願いします。
 シート全体の保護または、保護解除は以下のコートを使えば、対応できるですが、入力された内容を保護することになると、・・・?

具体的にいいますと、

第3行セルA3:Z3に入力し、終わったら、次の行へ、
                   このタイミングで第1行から第3行を保護
第4行セルA4:Z4に入力し、終わったら、次の行へ、
                   このタイミングで第1行から第4行を保護
第5行セルA5:Z5に入力し、終わったら、次の行へ、
                   このタイミングで第1行から第5行を保護



Sub test01()
  ActiveSheet.Protect  '当シート保護
  ・
  ・
  ActiveSheet.Unprotect '当シート保護解除
End Sub

【58817】Re:入力された内容を保護するには?
発言  Jaka  - 08/11/12(水) 10:44 -

引用なし
パスワード
   あらかじめセルのロックを外しておいて、シートが保護された状態にしておく。
入力後にセルのロックをかけてやるとか。
セルのロックon/offは保護解除してから行わないとエラーになります。
極簡単に書くとこんな風に。

Private Sub Worksheet_Change(ByVal Target As Range)
'If Not IsEmpty(Target.Value) Then
  ActiveSheet.Unprotect   '"111"
  Target.Locked = True これで、セルのロック
  ActiveSheet.Protect
'End If
End Sub

【58886】Re:入力された内容を保護するには?
質問  夜勤担当  - 08/11/16(日) 13:18 -

引用なし
パスワード
   Jakaさん
ありがとうございます。いただいたコードへの理解はできていないので、
よろしくお願いします。

行いたいのは、
第3行セルA3:Z3に入力し、終わったら、次の行(4行目)へ、
                   このタイミングで第1行から第3行を保護
第4行セルA4:Z4に入力し、終わったら、次の行(5行目)へ、
                   このタイミングで第1行から第4行を保護
第5行セルA5:Z5に入力し、終わったら、次の行(6行目)へ、
                   このタイミングで第1行から第5行を保護



Private Sub Worksheet_Change(ByVal Target As Range)
'If Not IsEmpty(Target.Value) Then       
  ActiveSheet.Unprotect   '"111"       
  Target.Locked = True これで、セルのロック  
  ActiveSheet.Protect
'End If
End Sub

【58898】Re:入力された内容を保護するには?
発言  Jaka  - 08/11/17(月) 13:27 -

引用なし
パスワード
   理解できてないって、
シート保護とセルのロックの事を知らないと意味が無いと思いますけど。

このタイミングで・・・というより、こんな感じに26列ふさがったら
セルのロックをしていった方がいいと思いますけどね。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim RowG As Long
RowG = Target.Row
If RowG > 26 Then Exit Sub
With Cells(RowG, 1).Resize(, 26)
  If Application.CountA(.Cells) = 26 Then
   シートの保護解除
   セルのロック
   シートの保護
  End If
End With
End Sub

【59086】Re:入力された内容を保護するには?
お礼  夜勤担当  - 08/11/27(木) 12:22 -

引用なし
パスワード
   Jakaさん
問題解決!ありがとうございました。

3978 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free