2014-02-26 77 views
0

我正在寫一個代碼,用excel分兩行使用vba.I出現溢出錯誤。使用VBA劃分2行

Private Sub Rated_Advances_Total_Advance() 
    Const FOLDER As String = "C:\SBI_Files\" 
    Const cStrWSName As String = "Rated Advances to Total Advance" 
    Const sourceName As String = "Credit Risk Components" 
    On Error GoTo ErrorHandler 

    Dim i As Integer 
    Dim fileName As String 



    'ThisWorkbook.Worksheets(cStrWSName).Range("A4:C9").ClearContents 
' ThisWorkbook.Worksheets(cStrWSName).Range("A12:C17").ClearContents 
' ThisWorkbook.Worksheets(cStrWSName).Range("A19:C29").ClearContents 


    P = 4 
    j = 1 

fileName = Dir(FOLDER, vbDirectory) 
Do While Len(fileName) > 0 

    If Right$(fileName, 4) = "xlsx" Or Right$(fileName, 3) = "xls" Then 
    i = i + 1 
    Dim currentWkbk As Excel.Workbook 
    Set currentWkbk = Excel.Workbooks.Open(FOLDER & fileName) 


    'Entity wise consolidation' 

    ThisWorkbook.Worksheets(cStrWSName).Cells(P, j).Value = Left(currentWkbk.Name, Len(currentWkbk.Name) - 4) 
    ThisWorkbook.Worksheets(cStrWSName).Cells(P, j).Font.Bold = True 

    ThisWorkbook.Worksheets(cStrWSName).Cells(P, 2).Value = currentWkbk.Sheets(sourceName).Cells(24, 3).Value/currentWkbk.Sheets(sourceName).Cells(27, 3).Value 

如果值大於15倍的數字就會導致溢出,如果你想使用它作爲一個整數(我來到這裏溢出錯誤)

P = P + 1 
    currentWkbk.Close 
    End If 
    fileName = Dir 
Loop 
Rated_Advances_Total_Advance 
ProgramExit: 
    Exit Sub 
ErrorHandler: 
    MsgBox Err.Number & " - " & Err.Description 
    Resume ProgramExit 
End Sub 
+0

發生錯誤時「P」的值是多少?是否可能'Integer'類型是[** overflown **](http://msdn.microsoft.com/en-us/library/office/aa164754(v = office.10).aspx)?將聲明從'Integer'更改爲'Long'並快速嘗試 – 2014-02-26 13:45:00

+0

@mehow對於第一個P本身,它顯示一個錯誤。我試着用很長時間它沒有工作 – user3045652

回答

0

Dim myValue As Long 

myValue = Cells(.....).Value