Trong 1 file tính excel khi mình sửa 1 vài công thức thi save lại không được và đoạn code trong file này cũng bị lỗi luôn.
đoạn code này là:
Mong các bác xem đoạn code này có cài lỗi gì để không save được không?Chân thành cảm ơn nhiều.
(Chú ý: lần sau khi đưa các đoạn code vào bạn nhớ đưa vào [ code]đoạn mã của bạn[ /code] nha)
đoạn code này là:
Mã:
'Start of Interpolation for 2 or 1 dimension, named Interpolation
Private Function SlopeValue(ByVal RangeUpper, RangeLower, RowUpper, RowLower As Double) As Double
SlopeValue = (RangeUpper - RangeLower) / (RowUpper - RowLower)
End Function
Private Function InterValue(ByVal RangeLower, RowValue, RowSmaller, Slope As Double) As Double
InterValue = RangeLower + (RowValue - RowSmaller) * Slope
End Function
Function Interpolation(ByVal RowValue, ByVal ColValue, Rng As Range) As Double
Dim i As Long, j As Long
Dim Slope As Double
Dim Inter, Inter1, Inter2 As Double
Dim Rows, Columns As Long
Dim CheckValue As Double
'Specify the number of columns and rows of the range data
Columns = Rng.Columns.Count
Rows = Rng.Rows.Count
On Error Resume Next
'In case, the column value is less than the minimum of range column value
If ColValue <= Rng(1, 2) Then
If RowValue <= Rng(2, 1) Then
Inter = Rng(2, 2)
ElseIf RowValue >= Rng(Rows, 1) Then
Inter = Rng(Rows, 2)
Else
For i = 1 To Rows - 1
If RowValue = Rng(i, 1) Then Inter = Rng(i, 2)
CheckValue = (RowValue - Rng(i, 1)) * (RowValue - Rng(i + 1, 1))
If CheckValue < 0 Then
Slope = SlopeValue(Rng(i + 1, 2), Rng(i, 2), Rng(i + 1, 1), Rng(i, 1))
Inter = InterValue(Rng(i, 2), RowValue, Rng(i, 1), Slope)
End If
Next i
End If
'In case, the column value is more than the maximun of range column value
ElseIf ColValue >= Rng(1, Columns) Then
If RowValue <= Rng(2, 1) Then
Inter = Rng(2, Columns)
ElseIf RowValue >= Rng(Rows, 1) Then
Inter = Rng(Rows, Columns)
Else
For i = 1 To Rows - 1
If RowValue = Rng(i, 1) Then Inter = Rng(i, Columns)
CheckValue = (RowValue - Rng(i, 1)) * (RowValue - Rng(i + 1, 1))
If CheckValue < 0 Then
Slope = SlopeValue(Rng(i + 1, Columns), Rng(i, Columns), Rng(i + 1, 1), Rng(i, 1))
Inter = InterValue(Rng(i, Columns), RowValue, Rng(i, 1), Slope)
End If
Next i
End If
'In case, the column value is in the range column value
Else
For j = 1 To Columns - 1
If ColValue = Rng(1, j) Then
If RowValue <= Rng(2, 1) Then
Inter = Rng(2, j)
ElseIf RowValue >= Rng(Rows, 1) Then
Inter = Rng(Rows, j)
Else
For i = 1 To Rows - 1
If RowValue = Rng(i, 1) Then Inter = Rng(i, j)
CheckValue = (RowValue - Rng(i, 1)) * (RowValue - Rng(i + 1, 1))
If CheckValue < 0 Then
Slope = SlopeValue(Rng(i + 1, j), Rng(i, j), Rng(i + 1, 1), Rng(i, 1))
Inter = InterValue(Rng(i, j), RowValue, Rng(i, 1), Slope)
End If
Next i
End If
ElseIf (ColValue - Rng(1, j)) * (ColValue - Rng(1, j + 1)) < 0 Then
If RowValue <= Rng(2, 1) Then
Slope = SlopeValue(Rng(2, j + 1), Rng(2, j), Rng(1, j + 1), Rng(1, j))
Inter = InterValue(Rng(2, j), ColValue, Rng(1, j), Slope)
ElseIf RowValue >= Rng(Rows, 1) Then
Slope = SlopeValue(Rng(Rows, j + 1), Rng(Rows, j), Rng(1, j + 1), Rng(1, j))
Inter = InterValue(Rng(Rows, j), ColValue, Rng(1, j), Slope)
Else
For i = 1 To Rows - 1
If RowValue = Rng(i, 1) Then
Slope = SlopeValue(Rng(i, j + 1), Rng(i, j), Rng(1, j + 1), Rng(1, j))
Inter = InterValue(Rng(i, j), ColValue, Rng(1, j), Slope)
End If
CheckValue = (RowValue - Rng(i, 1)) * (RowValue - Rng(i + 1, 1))
If CheckValue < 0 Then
Slope = SlopeValue(Rng(i, j + 1), Rng(i, j), Rng(1, j + 1), Rng(1, j))
Inter1 = InterValue(Rng(i, j), ColValue, Rng(1, j), Slope)
Slope = SlopeValue(Rng(i + 1, j + 1), Rng(i + 1, j), Rng(1, j + 1), Rng(1, j))
Inter2 = InterValue(Rng(i + 1, j), ColValue, Rng(1, j), Slope)
Slope = SlopeValue(Inter2, Inter1, Rng(i + 1, 1), Rng(i, 1))
Inter = InterValue(Inter1, RowValue, Rng(i, 1), Slope)
End If
Next i
End If
End If
Next j
End If
'Passing the Interpolation's function value
Interpolation = Inter
End Function
(Chú ý: lần sau khi đưa các đoạn code vào bạn nhớ đưa vào [ code]đoạn mã của bạn[ /code] nha)
Chỉnh sửa lần cuối bởi điều hành viên: