プロが教えるわが家の防犯対策術!

どなたか、お力、知識をお貸しいただけませんでしょうか?

作業時間を把握するため例えば
「H列」に日付けを入力すると開始時刻が同じ行の「V列」に自動入力され
「J列」に日付けを入力すると終了時刻が同じ行の「W列」に自動入力され
同じ行の「X列」に(終了時刻)-(開始時刻)=作業時間が自動入力される
VBAを作成する為、色々と調べたのですが上手くいきません。

また、「G列」「H列」「J列」に入力する際はコピペできないようにVBAでどうにかできませんか?

VBA初心者で申し訳ございませんが、宜しくお願いいたします。

質問者からの補足コメント

  • 更に「G列」「H列」「J列」をオートフィルもできなく設定したいですがVBAで可能でしょうか?
    度々、申し訳御座いませんが宜しくお願いいたします。

      補足日時:2018/12/22 18:30

A 回答 (1件)

コピペ、および、オートフィルの制限ですが、該当ワークシートのSelectionChangeイベントプロシジャに次のコードを書いてみて下さい。

ただ、このコードはシート保護の設定/解除を行います。すでにシート保護を行っている場合は解除されてしまうので、その際は調整してください。

時刻の自動入力の方は、「うまくいかない」だけしか記載がなく、「何が?」「どのように?」の部分が全くわからないので、回答を控えさせていただきます。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim protectRng As Range
Dim myRng As Range
Set protectRng = Union(Columns("G"), Columns("H"), Columns("J"))
Set myRng = Intersect(Target, protectRng)
If myRng Is Nothing Then
ActiveSheet.Unprotect
Else
ActiveSheet.Protect UserInterfaceOnly:=True
protectRng.Locked = True
If myRng.CountLarge = 1 Then Target.Locked = False
End If
End Sub
    • good
    • 0
この回答へのお礼

早速のご返答ありがとうございます。
教えて頂いたコードで試した所、上手くいきました。
大変勉強になりました。
助かりました。

お礼日時:2018/12/23 21:28

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