У меня есть условие If в ячейке B22
.Возвращает True
или False
на основе значения B1
.Значения в ячейке B1
являются динамическими.У меня есть If
условие в C22
, которое вызывает функцию N_50_C22
, если аргумент B22
равен True
.У меня есть требование, где мне нужно было бы скопировать значение E1
в C22
(через вышеупомянутую функцию), когда аргумент из ячейки B22
превращает True
только в первом экземпляре.Это скопированное значение в C22
должно оставаться неизменным независимо от последующих изменений в аргументах B22
.
У меня есть приведенный ниже код VBA для функции N_50_C22
.
Public Dict_N_50_C22 As New Scripting.Dictionary
Public Function N_50_C22() As Double
On Error GoTo ErrHandler:
Dim High_Break_out As String, ReadCellValue As String
If Not Dict_N_50_C22.Exists(High_Break_out) Then
Dict_N_50_C22.Add High_Break_out, ""
End If
'Now retrieve the Order Status
'This will return the value of Key Readcellvalue
ReadCellValue = Dict_N_50_C22(High_Break_out)
'If the order status equals the Trans then, we already placed order for that Trans
'Exit the Function, don't place order again
If ReadCellValue = "TRUE" Then
Exit Function
End If
'If the Order Status is not equal to Trans then
'Place the Order
'Store the Trans as value to the Key TrdSym
'So that next time it will return the Trans
'Adding trans to dictionary key
Dict_N_50_C22.Item(High_Break_out) = ThisWorkbook.Sheets("UP-MT").Range("B22").Value
'Place the Order
N_50_C22 = ThisWorkbook.Sheets("UP-MT").Range("E1").Value
Exit Function
ErrHandler:
N_50_C22 = Err.Description
End Function
У меня проблема, когда эта функция возвращает значение 0 для первого истинного оператора B22
.Не могли бы вы решить эту проблему.