2017-02-20 3 views
-1

お客様が入力できるワークシートが1つあります。例えば、それぞれから2つのセルを引いて、編集不可能な別のセルに値を置きます。

列cの値は、列Bから来るべきである - 列Aをユーザが両方のAとB列の値を入力するたびに、自動的にVBAコードを使用してカラム

アムC.

を反映すべきです。

ありがとうございました。

+1

あなたの質問は何ですか? – tretom

+0

これまでに何を試しましたか? – R3uK

答えて

0

おそらくあなたは、ユーザーが「シート1」に値を入力されると仮定すると、ユーザーが列AとBにエントリを作成するときは、これを行うことができます保護を解除してから再守るワークシートにする方法を求めている:

Option Explicit 

Private Sub Worksheet_Change(ByVal target As Range) 

    If Not Intersect(target, Me.Range("A:B")) Is Nothing Then  
     Application.EnableEvents = False 
     UnprotectSheet1 

     Dim row As Integer 
     row = target.row 

     Cells(row, 3) = Cells(row, 2) - Cells(row, 1) 

     ProtectSheet1 
     Application.EnableEvents = True 
    End If 

End Sub 


Public Sub UnprotectSheet1() 
    Worksheets("Sheet1").Unprotect Password:="password" 
End Sub 


Public Sub ProtectSheet1() 
    With ThisWorkbook.Worksheets("Sheet1") 
    .Protect Password:="password" 
    .EnableSelection = xlUnlockedCells 
    End With 
End Sub 

このコードは "Sheet1"のコードセクションに入れなければなりません

+0

こんにちは、ありがとう。よし、分った。しかし、今私の問題は:列Cは編集不可能なはずです。列をロックすると、VBAコードでその列の変更を行うことはできません。したがって、ユーザーはその列を編集できません。開発者はVBAコードの助けを借りて列c(A〜B)に値を渡すことができます。 – aaroki

+0

シート(シート名)。範囲( "H1:H100")。パスワードの保護:= PassWord、UserInterfaceOnly:= True。私はWorkbook_Open()関数でこのコードを試しました。動いていない。 – aaroki

+0

シート(SheetName)。範囲( "C1:C100")を意味しますか?シート上に保護されていないセルと保護されたセルを組み合わせることができます。上のコードはうまくいくはずです(あなたがパスワードを知っていると仮定して)。 – Amorpheuses

関連する問題