アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルで1行ごとに情報を入れていきます。

情報項目(列)は、A列~BU列です。

各列の情報入力のタイミングは項目により異なります。
最終情報を入力したタイミングで当該行を保護しようと考えております。

ネットにて下記のコードを発見したので試したところ「確定」をA列に入力した行は保護されます。
しかしながら当該行すべてが保護されてしまう為、確定後の変更が発生した場合に、情報訂正が
できなくなっております。

シート保護の解除を行うのも一つの方法とは思いますが、複数ユーザーでの使用となるため
できれば、あまりしたくありません。

「r.EntireRow.Locked = True」この構文にて行全体にロックをかけているようですが
これを行全体でなく当該行のB列~BU列までに変更することによりA列の「確定」を
削除(DELETE)して、ロックが解除され当該行の訂正ができるようにしたいのですが・・・

訂正後、再度「確定」を入力することにより再度、保護をかける。

解りにくいご質問かもしれませんが、ご教示お願いいたします。


ネットで発見したマクロ

Private Sub Worksheet_Change(ByVal Target As Range)
Dim r, rng As Range
 Set rng = Intersect(Target, Columns(1))
 If Not rng Is Nothing Then
  If ActiveSheet.ProtectContents = True Then
   ActiveSheet.Unprotect
  End If
  For Each r In rng
   If r.Value = "確定" Then
    r.EntireRow.Locked = True
   Else
    r.EntireRow.Locked = False
   End If
  Next r
  ActiveSheet.Protect DrawingObjects:=True, Contents:=True
 End If

A 回答 (1件)

こんには



r.EntireRow を

r.Offset(0, 1).Resize(1, 72) とか
Cells(r.Row, 2).Resize(1, 72) などに

置き換えることで実現できないでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
ご教示いただいた方法で、できました。
大変助かりました。
ありがとうございます。

お礼日時:2015/11/25 18:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!