从每个细胞中减去2个细胞,并将该值放在另一个不可编辑的细胞中。

时间:2017-02-20 06:52:29

标签: excel vba excel-vba

我有一张可由客户输入的工作表。例如,

列c值应来自B列 - A列。每当用户在A和B列中输入值时,它应自动反映C列。

使用VBA代码。

感谢。

1 个答案:

答案 0 :(得分:0)

当用户对A列和B列进行输入时,您可能会询问如何取消保护并重新保护工作表。假设用户在" Sheet1&#34上输入值,您可以这样做;:

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"

的代码部分