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

时间:2016-02-08 14:03:00

标签: excel vba excel-vba

目前我正在制作一个模型,其中我需要2个单元来保持固定的比率,以便当2个单元格的总和总是等于1时。在这种情况下,细胞是F13和F14。举例来说,如果F13的值变为0.4,那么F14应该变为0.6。如果关闭F14的值变为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

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

1 个答案:

答案 0 :(得分:2)

也许这对你有用:

Gtk.CellRendererPixbuf

如果F13变为0到1之间的值,则F14自动更改为互补值,反之亦然。如果除了0和1之间的数字之外的任何值被放入这2个单元中的一个中,则该单元中的值变为错误。只有将值直接放在这些单元格中的任何一个(而不是包含这些单元格的较大范围)时,事件处理程序才有效,但使用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 似乎是意图。