目前我正在制作一个模型,其中我需要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
但是此代码无法正常运行。那么我的问题是,我应该如何更改我的代码才能使其正常工作?
答案 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
似乎是意图。