Nhờ xem giúp file: Sửa công thức và chèn dòng thì bị lỗi code VBA

  • Thread starter Thread starter 790312
  • Ngày gửi Ngày gửi
Liên hệ QC

790312

Thành viên hoạt động
Tham gia
7/4/08
Bài viết
181
Được thích
8
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à:
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
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)
 
Chỉnh sửa lần cuối bởi điều hành viên:
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.
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.
Đưa file lên đây để test cho dể bạn ơi! Nhìn 1 đóng code, dù không làm biếng cũng khó mà làm.. siêng được!
 
Upvote 0
Đây là 2 file.file gốc và file đã xoá nhữnng NAME lỗi.Sau khi xoá những Name lỗi ta chèn 1 vài dòng vào để lập thêm công thức tính thì bị lỗi không save được.Bạn xem giúp mình với.Thanks
 

File đính kèm

Upvote 0
Đây là 2 file.file gốc và file đã xoá nhữnng NAME lỗi.Sau khi xoá những Name lỗi ta chèn 1 vài dòng vào để lập thêm công thức tính thì bị lỗi không save được.Bạn xem giúp mình với.Thanks
Cụ thể là chèn dòng chổ nào? lập công thức gì?
Chứ file này tôi chèn dòng hay gõ công thức vào rồi save lại bình thường ---> Không lổi gì cả
Còn nữa: Câu thông báo lổi bạn nhìn thấy nó ghi cái gì?
 
Upvote 0
mới sửa xong thì save được,nhưng sau vài lần thì không được.công thức thì đơn giản ô này bằng ô kia cộng ô nọ thôi.mình up file này lên hiện thông báo và vị trí mình chèn.Cảm ơn bạn nhiều.
 

File đính kèm

Upvote 0
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à:
PHP:
'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
PHP:
Private Function InterValue(ByVal RangeLower, RowValue, RowSmaller, Slope As Double) As Double
  InterValue = RangeLower + (RowValue - RowSmaller) * Slope
End Function
PHP:
Function Interpolation(ByVal RowValue, ByVal ColValue, Rng As Range) As Double
  Dim i As Long, j As Long, Rows, Columns As Long
  Dim Slope As Double,  Inter, Inter1, Inter2 As Double, 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
Lần sau bạn tự làm vậy đó nha, mới mong có người ngó ngàng tới & chú ý hơn về tiêu đề!
 
Upvote 0
Bác ndu96081631 không giúp được e sao?
 
Upvote 0
Bác ndu96081631 không giúp được e sao?
Tôi không nghĩ ra được bất cứ lổi gì có thể xuất hiện trên file của bạn cả! (vì trên máy tính của tôi, file này chạy bình thường) ---> Vậy hãy thí nghiệm bằng cách:
- Mang file sang chạy trên máy tính khác
- Tìm hiểu xem liệu có chương trình nào đang cài trên máy tính của bạn làm ảnh hưởng đến file này hay không (chẳng hạn các chương trình diệt virus)
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom