Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Private Sub Worksheet_Change(ByVal Target As Range)
- If disableEvents Then Exit Sub
- disableEvents = True
- Dim rgFound As Range
- Dim defVal As Range
- Dim currParam As Range
- Dim currParamDict As Range
- Set targ = Intersect(Target, Range("A:A"))
- If Not targ Is Nothing Then
- Dim Row As Integer
- Row = Worksheets("FT_CASE_xx").Cells(Rows.Count, 1).End(xlUp).Row
- Dim str As String
- str = "A2:K" & Row
- If IsEmpty(targ) = False Then
- With Worksheets("FT_CASE_xx").Range(str).Borders
- .LineStyle = xlContinuous
- .Weight = xlThin
- .ColorIndex = 1
- End With
- str = "B2:B" & Row
- Worksheets("FT_CASE_xx").Range(str).Interior.Color = RGB(230, 230, 230)
- str = "E2:E" & Row
- Worksheets("FT_CASE_xx").Range(str).Interior.Color = RGB(230, 230, 230)
- str = "F2:K" & Row
- Worksheets("FT_CASE_xx").Range(str).Interior.Color = RGB(210, 210, 210)
- End If
- With Worksheets("FT_CASE_xx")
- For Each defVal In .Range("A2", .Range("A" & Rows.Count).End(xlUp)).Offset(, 1)
- Set currParam = defVal.Offset(, -1)
- Dim xlFirstChar As String
- xlFirstChar = Left$(currParam, 1)
- If xlFirstChar = "B" Then
- Set rgFound = Worksheets("DEF_BOOLEAN").Range("A:A").Find(currParam.value)
- defVal.Offset(, 1).Interior.Color = RGB(230, 230, 230)
- defVal.Offset(, 1).Locked = True
- defVal.Offset(, 2).Select
- Worksheets("FT_CASE_xx").Unprotect
- With Selection.Validation
- .Delete
- .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="TRUE,FALSE"
- .IgnoreBlank = True
- .InCellDropdown = True
- .InputTitle = ""
- .ErrorTitle = ""
- .InputMessage = ""
- .ErrorMessage = ""
- .ShowInput = True
- .ShowError = True
- End With
- Worksheets("FT_CASE_xx").Protect UserInterfaceOnly:=True
- ElseIf xlFirstChar = "F" Then
- Set rgFound = Worksheets("DEF_FLOAT").Range("A:A").Find(currParam.value)
- defVal.Offset(, 1).Interior.ColorIndex = 0
- defVal.Offset(, 1).Locked = False
- defVal.Offset(, 2).Locked = False
- defVal.Offset(, 1).NumberFormat = "0.000"
- defVal.Offset(, 2).NumberFormat = "0.000"
- defVal.Offset(, 3).NumberFormat = "0.000"
- End If
- If rgFound Is Nothing Then
- Debug.Print "Name was not found."
- Else
- If xlFirstChar = "B" Then
- Set currParamDict = rgFound.Offset(, 3)
- Else
- Set currParamDict = rgFound.Offset(, 5)
- End If
- defVal.value = currParamDict.value
- End If
- Next defVal
- End With
- Else
- Set targ = Intersect(Target, Range("C:C"))
- If Not targ Is Nothing Then
- Dim coeffVal As Range
- Dim currVal As Range
- Dim RequestedVal As Range
- With Worksheets("FT_CASE_xx")
- For Each coeffVal In .Range("C2", .Range("C" & Rows.Count).End(xlUp))
- Set currVal = coeffVal.Offset(, -1)
- Set RequestedVal = coeffVal.Offset(, 1)
- Set ParamName = coeffVal.Offset(, -2)
- Dim xlFirstChar2 As String
- xlFirstChar2 = Left$(ParamName, 1)
- If ((xlFirstChar2 = "F") And (IsEmpty(coeffVal.value) = False)) Then
- RequestedVal.value = coeffVal.value * currVal.value
- End If
- Next coeffVal
- End With
- Else
- Set targ = Intersect(Target, Range("D:D"))
- If Not targ Is Nothing Then
- Dim coeffsVal As Range
- Dim val As Range
- Dim reqVal As Range
- Dim Parameter As Range
- With Worksheets("FT_CASE_xx")
- For Each reqVal In .Range("D2", .Range("D" & Rows.Count).End(xlUp))
- Set coeffsVal = reqVal.Offset(, -1)
- Set val = reqVal.Offset(, -2)
- Set Parameter = reqVal.Offset(, -3)
- Dim xlFirstChar3 As String
- xlFirstChar3 = Left$(Parameter, 1)
- If ((xlFirstChar3 = "F") And (IsEmpty(reqVal.value) = False)) Then
- If val.value = 0 Then
- coeffsVal.value = reqVal.value
- Else
- coeffsVal.value = reqVal.value / val.value
- End If
- End If
- Next reqVal
- End With
- Else
- Exit Sub
- End If
- End If
- End If
- disableEvents = False
- Recolor
- End Sub
- Private Sub Worksheet_SelectionChange(ByVal Target As Range)
- If Selection.Count = 1 Then
- If Not Intersect(Target, Range("A:A")) Is Nothing Then
- Dim cb As ComboBox
- Dim combineRange As Range
- Dim boolStr As String
- Dim floatStr As String
- Dim booleanRange As Range
- Dim floatRange As Range
- Dim bRow As Integer
- bRow = Worksheets("DEF_BOOLEAN").Cells(Rows.Count, 1).End(xlUp).Row
- Dim fRow As Integer
- fRow = Worksheets("DEF_FLOAT").Cells(Rows.Count, 1).End(xlUp).Row
- boolStr = "A2:A" & bRow
- floatStr = "A2:A" & fRow
- Set booleanRange = Worksheets("DEF_BOOLEAN").Range(boolStr)
- Set floatRange = Worksheets("DEF_FLOAT").Range(floatStr)
- Worksheets("FT_CASE_xx").Unprotect
- Set cb = Worksheets("FT_CASE_xx").OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, DisplayAsIcon:=False, Left:=Target.Left, Top:=Target.Top, Width:=Target.Width, Height:=Target.Height).Object
- cb.LinkedCell = Target.Address
- Target.Offset(, 20).FormulaR1C1 = "=valchange(RC[-20])"
- Worksheets("FT_CASE_xx").Protect UserInterfaceOnly:=True
- For Each cell In booleanRange
- cb.AddItem cell.value
- Next cell
- For Each cell In floatRange
- cb.AddItem cell.value
- Next cell
- End If
- End If
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement