I am new to programming and I am doing an exercise to calculate stock return using For...Next and Do While Loop. I have no problem with the For...Next part but my code for the Do While Loop part has "overflow" error. I found that the error was because of the division at the end: "Sheets("Task1-Returns").Cells(Counter, 3).Value = MicroSPrice1 / MicroSPrice0", but I dont know how to fix it.
Please let me know how I can fix this. Thank you.
Code for For...Next
Sub CalculateReturn_ForNext()
'Declare variables
Dim TeslaPrice0, TeslaPrice1, MicroSPrice0, MicroSPrice1, Counter
For Counter = 2 To 251
'Insert date from sheet Raw Data
Sheets("Task1-Returns").Cells(Counter, 1).Value = Sheets("Task1-RawData").Cells(Counter + 1, 1)
'Calculate return of Tesla.
TeslaPrice0 = Sheets("Task1-RawData").Cells(Counter, 2).Value
TeslaPrice1 = Sheets("Task1-RawData").Cells(Counter + 1, 2).Value
Sheets("Task1-Returns").Cells(Counter, 2).Value = TeslaPrice1 / TeslaPrice0 - 1
'Calculate return of MicroSoft
MicroSPrice0 = Sheets("Task1-RawData").Cells(Counter, 3).Value
MicroSPrice1 = Sheets("Task1-RawData").Cells(Counter + 1, 3).Value
Sheets("Task1-Returns").Cells(Counter, 3).Value = MicroSPrice1 / MicroSPrice0 - 1
Next
End Sub
Code for Do While Loop
Sub CalculateReturn_DoWhile()
'Declare variables
Dim TeslaPrice0, TeslaPrice1, MicroSPrice0, MicroSPrice1, Counter
Counter = 2
Do While Sheets("Task1-RawData").Cells(Counter, 1).Value <> ""
'Assign value to MicroSPrice0 and MicroSPrice1
MicroSPrice0 = Sheets("Task1-RawData").Cells(Counter, 3).Value
MicroSPrice1 = Sheets("Task1-RawData").Cells(Counter + 1, 3).Value
'Insert date from sheet Raw Data
Sheets("Task1-Returns").Cells(Counter, 1).Value = Sheets("Task1-RawData").Cells(Counter + 1, 1)
'Calculate return of MicroSoft
Sheets("Task1-Returns").Cells(Counter, 3).Value = MicroSPrice1 / MicroSPrice0
Counter = Counter + 1
Loop
End Sub
I tried to calculate stock return using Loop in VBA but received overflow error with the division.
MicroSPrice1andMicroSPrice0when the error occurs?Run-time error '6': OverflowandRun-time error '11': Division by zero. Which one is it? Is the last (bottom-most) row with a date row251or252? Are you expecting as many resulting rows as there are dates or one less? Also, share some sample data using this markdown generator, e.g., for rows1to11, for both sheets, i.e., for the existing data in sheetRawand the expected (resulting) data in sheetReturns.252, then, to kind of mimic the functionality of the For...Next loop, you need to useDo While Sheets("Task1-RawData").Cells(Counter + 1, 1).Value <> ""(note the+ 1). But that doesn't explain why there is a run-time error.