保持2个单元格Excel vba之间的固定比例

目前我正在做一个模型,在这个模型中我需要2个单元来保持一个固定的比例,这样当两个单元的总和总是等于1时。 在这种情况下,单元格是F13和F14。 举个例子,如果F13的值变为0.4,那么F14应该变成0.6。 如果closuresF14的值变为0.2,那么F13也应该变为0.8。 我得到的代码是:

Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Target.Worksheet.Range("F13")) Is Nothing Then If ActiveCell.Value > 1 Then MsgBox "input value is larger than 1" Else Range("F14").Value = 1 - ActiveCell.Value Exit Sub End If Exit Sub End If Exit Sub If Not Intersect(Target, Target.Worksheet.Range("F14")) Is Nothing Then If ActiveCell.Value > 1 Then MsgBox "input value is larger than 1" Else Range("F13").Value = 1 - ActiveCell.Value Exit Sub End If Exit Sub End If Exit Sub End Sub 

但是,此代码无法正常工作。 我的问题是,那么我应该如何改变我的代码才能正常工作?

也许这会为你工作:

 Private Sub Worksheet_Change(ByVal Target As Range) Dim v As Variant If Target.Address = "$F$13" Then v = Target.Value If Not IsNumeric(v) Then Range("F13").Value = CVErr(xlErrValue) ElseIf v < 0 Or v > 1 Then Range("F13").Value = CVErr(xlErrValue) Else Range("F14").Value = 1 - v End If ElseIf Target.Address = "$F$14" Then v = Target.Value If Not IsNumeric(v) Then Range("F14").Value = CVErr(xlErrValue) ElseIf v < 0 Or v > 1 Then Range("F14").Value = CVErr(xlErrValue) Else Range("F13").Value = 1 - v End If End If End Sub 

如果F13被更改为0和1之间的值,则F14会自动更改为互补值,反之亦然。 如果0和1之间的数字以外的任何值被放入这两个单元格中的一个单元格中,则该单元格中的值将成为错误。 事件处理程序只有在这些值直接放在这些单元格中的任何一个(而不是包含这些单元格的较大范围)时才起作用,但是使用ActiveCell似乎是这个意图。