Advertisement
Guest User

Untitled

a guest
Jul 19th, 2019
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 8.55 KB | None | 0 0
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.    
  3.      
  4.    
  5.     If disableEvents Then Exit Sub
  6.     disableEvents = True
  7.    
  8.     Dim rgFound As Range
  9.     Dim defVal As Range
  10.     Dim currParam As Range
  11.     Dim currParamDict As Range
  12.    
  13.     Set targ = Intersect(Target, Range("A:A"))
  14.     If Not targ Is Nothing Then
  15.    
  16.         Dim Row As Integer
  17.         Row = Worksheets("FT_CASE_xx").Cells(Rows.Count, 1).End(xlUp).Row
  18.        
  19.         Dim str As String
  20.         str = "A2:K" & Row
  21.        
  22.         If IsEmpty(targ) = False Then
  23.        
  24.         With Worksheets("FT_CASE_xx").Range(str).Borders
  25.             .LineStyle = xlContinuous
  26.             .Weight = xlThin
  27.             .ColorIndex = 1
  28.         End With
  29.        
  30.         str = "B2:B" & Row
  31.         Worksheets("FT_CASE_xx").Range(str).Interior.Color = RGB(230, 230, 230)
  32.         str = "E2:E" & Row
  33.         Worksheets("FT_CASE_xx").Range(str).Interior.Color = RGB(230, 230, 230)
  34.         str = "F2:K" & Row
  35.         Worksheets("FT_CASE_xx").Range(str).Interior.Color = RGB(210, 210, 210)
  36.         End If
  37.        
  38.        
  39.        
  40.         With Worksheets("FT_CASE_xx")
  41.             For Each defVal In .Range("A2", .Range("A" & Rows.Count).End(xlUp)).Offset(, 1)
  42.                
  43.                 Set currParam = defVal.Offset(, -1)
  44.                
  45.                 Dim xlFirstChar As String
  46.                 xlFirstChar = Left$(currParam, 1)
  47.                
  48.                 If xlFirstChar = "B" Then
  49.                    
  50.                     Set rgFound = Worksheets("DEF_BOOLEAN").Range("A:A").Find(currParam.value)
  51.                     defVal.Offset(, 1).Interior.Color = RGB(230, 230, 230)
  52.                     defVal.Offset(, 1).Locked = True
  53.                    
  54.                    
  55.                     defVal.Offset(, 2).Select
  56.                     Worksheets("FT_CASE_xx").Unprotect
  57.                     With Selection.Validation
  58.                         .Delete
  59.                         .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="TRUE,FALSE"
  60.                         .IgnoreBlank = True
  61.                         .InCellDropdown = True
  62.                         .InputTitle = ""
  63.                         .ErrorTitle = ""
  64.                         .InputMessage = ""
  65.                         .ErrorMessage = ""
  66.                         .ShowInput = True
  67.                         .ShowError = True
  68.                     End With
  69.                     Worksheets("FT_CASE_xx").Protect UserInterfaceOnly:=True
  70.                 ElseIf xlFirstChar = "F" Then
  71.                     Set rgFound = Worksheets("DEF_FLOAT").Range("A:A").Find(currParam.value)
  72.                     defVal.Offset(, 1).Interior.ColorIndex = 0
  73.                     defVal.Offset(, 1).Locked = False
  74.                     defVal.Offset(, 2).Locked = False
  75.                    
  76.                     defVal.Offset(, 1).NumberFormat = "0.000"
  77.                     defVal.Offset(, 2).NumberFormat = "0.000"
  78.                     defVal.Offset(, 3).NumberFormat = "0.000"
  79.                
  80.                 End If
  81.                
  82.                 If rgFound Is Nothing Then
  83.                     Debug.Print "Name was not found."
  84.                 Else
  85.                    
  86.                     If xlFirstChar = "B" Then
  87.                         Set currParamDict = rgFound.Offset(, 3)
  88.                     Else
  89.                         Set currParamDict = rgFound.Offset(, 5)
  90.                     End If
  91.                    
  92.                     defVal.value = currParamDict.value
  93.                    
  94.                 End If
  95.                
  96.                 Next defVal
  97.             End With
  98.            
  99.         Else
  100.             Set targ = Intersect(Target, Range("C:C"))
  101.            
  102.             If Not targ Is Nothing Then
  103.                
  104.                 Dim coeffVal As Range
  105.                 Dim currVal As Range
  106.                 Dim RequestedVal As Range
  107.                
  108.                 With Worksheets("FT_CASE_xx")
  109.                     For Each coeffVal In .Range("C2", .Range("C" & Rows.Count).End(xlUp))
  110.                        
  111.                         Set currVal = coeffVal.Offset(, -1)
  112.                         Set RequestedVal = coeffVal.Offset(, 1)
  113.                         Set ParamName = coeffVal.Offset(, -2)
  114.                        
  115.                         Dim xlFirstChar2 As String
  116.                         xlFirstChar2 = Left$(ParamName, 1)
  117.                        
  118.                         If ((xlFirstChar2 = "F") And (IsEmpty(coeffVal.value) = False)) Then
  119.                             RequestedVal.value = coeffVal.value * currVal.value
  120.                         End If
  121.                        
  122.                         Next coeffVal
  123.                     End With
  124.                    
  125.                 Else
  126.                    
  127.                     Set targ = Intersect(Target, Range("D:D"))
  128.                     If Not targ Is Nothing Then
  129.                        
  130.                         Dim coeffsVal As Range
  131.                         Dim val As Range
  132.                         Dim reqVal As Range
  133.                         Dim Parameter As Range
  134.                        
  135.                         With Worksheets("FT_CASE_xx")
  136.                             For Each reqVal In .Range("D2", .Range("D" & Rows.Count).End(xlUp))
  137.                                
  138.                                 Set coeffsVal = reqVal.Offset(, -1)
  139.                                 Set val = reqVal.Offset(, -2)
  140.                                 Set Parameter = reqVal.Offset(, -3)
  141.                                
  142.                                 Dim xlFirstChar3 As String
  143.                                 xlFirstChar3 = Left$(Parameter, 1)
  144.                                
  145.                                 If ((xlFirstChar3 = "F") And (IsEmpty(reqVal.value) = False)) Then
  146.                                     If val.value = 0 Then
  147.                                         coeffsVal.value = reqVal.value
  148.                                     Else
  149.                                         coeffsVal.value = reqVal.value / val.value
  150.                                     End If
  151.                                 End If
  152.                                
  153.                                 Next reqVal
  154.                             End With
  155.                            
  156.                         Else
  157.                             Exit Sub
  158.                         End If
  159.                     End If
  160.                 End If
  161.                 disableEvents = False
  162.                
  163.                 Recolor
  164.                
  165.             End Sub
  166.            
  167.                        
  168.                        
  169.             Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  170.                 If Selection.Count = 1 Then
  171.  
  172.  
  173.                     If Not Intersect(Target, Range("A:A")) Is Nothing Then
  174.  
  175.                         Dim cb As ComboBox
  176.                         Dim combineRange As Range
  177.                         Dim boolStr As String
  178.                         Dim floatStr As String
  179.                         Dim booleanRange As Range
  180.                         Dim floatRange As Range
  181.  
  182.                         Dim bRow As Integer
  183.                         bRow = Worksheets("DEF_BOOLEAN").Cells(Rows.Count, 1).End(xlUp).Row
  184.  
  185.                         Dim fRow As Integer
  186.                         fRow = Worksheets("DEF_FLOAT").Cells(Rows.Count, 1).End(xlUp).Row
  187.  
  188.                         boolStr = "A2:A" & bRow
  189.                         floatStr = "A2:A" & fRow
  190.  
  191.                         Set booleanRange = Worksheets("DEF_BOOLEAN").Range(boolStr)
  192.                         Set floatRange = Worksheets("DEF_FLOAT").Range(floatStr)
  193.  
  194.                         Worksheets("FT_CASE_xx").Unprotect
  195.                         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
  196.                         cb.LinkedCell = Target.Address
  197.                         Target.Offset(, 20).FormulaR1C1 = "=valchange(RC[-20])"
  198.                        
  199.                        
  200.                         Worksheets("FT_CASE_xx").Protect UserInterfaceOnly:=True
  201.  
  202.  
  203.                         For Each cell In booleanRange
  204.                             cb.AddItem cell.value
  205.                             Next cell
  206.                             For Each cell In floatRange
  207.                                 cb.AddItem cell.value
  208.                                 Next cell
  209.  
  210.  
  211.                             End If
  212.                         End If
  213.                     End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement