I need some help here. I wrote some code to bring in some tag values from a third party piece of software. It works fine if I comment out the + i - 1, 1 part of the Lbound function, but says error 9 'Subscript out of range if I bring it back in.'

What I'm trying to do is have only the last value of my tag value populate the cell and then update the value below with the new tag value, every second.

Here's what I have:


Dim Repeat As Boolean

Sub PrepBook()
Worksheets("Sheet1").OnSheetActivate = "Module1.AutoSheet"
End Sub

Sub AutoSheet()
Repeat = False
End Sub

Sub GetDataButton() 'Get Data Button pressed
If Repeat = False Then 'don't do anything if we're already getting data
GetCurrentData
End If
End Sub

Sub RepeatButton() 'Repeat Button pressed
Repeat = True
GetCurrentData
End Sub

Sub StopRepeatButton() 'Stop Repeat Button pressed
Repeat = False
End Sub

Sub GetCurrentData()
chan = DDEInitiate("RSLINX", "Mastermold_Single_Spiral3")
If TypeName(chan) = "Error" Then
Repeat = False
MsgBox "Program Cannot Be Found"
Else
returndata = DDERequest(chan, "drive_amps")
For i = LBound(returndata) To UBound(returndata)
Worksheets("Sheet1").Cells(i + 1, 2).Value = returndata(LBound(returndata) + i - 1, 1) 'THIS IS THE LINE I'M GOING OUT OF RANGE ON'
Next i
returndata = DDERequest(chan, "takeup_amps")
For i = LBound(returndata) To UBound(returndata)
Worksheets("Sheet1").Cells(i + 2, 2).Value = returndata(LBound(returndata)) '+ i - 1, 1)
Next i
returndata = DDERequest(chan, "AIR_TEMPERATURE_SP2")
For i = LBound(returndata) To UBound(returndata)
Worksheets("Sheet1").Cells(i + 3, 2).Value = returndata(LBound(returndata)) '+ i - 1, 1)
Next i
DDETerminate chan
Call Put_In_Place
End If
If Repeat Then Application.OnTime Now + TimeValue("00:00:01"), "GetCurrentData"
End Sub

Sub Put_In_Place()

Worksheets("sheet1").Range("F" & _
Worksheets("sheet1").Range("F" & _
Rows.Count).End(xlUp).Offset(1, 0).Row & ":O" & _
Worksheets("sheet1").Range("O" & _
Rows.Count).End(xlUp).Offset(1, 0).Row) = _
Application.WorksheetFunction.Transpose(Worksheets("sheet1").Range("B2:B14"))

If IsNumeric(Worksheets("sheet1").Range("F" & _
Worksheets("sheet1").Range("F" & _
Rows.Count).End(xlUp).Row).Offset(-1, -1).Value) Then
Worksheets("sheet1").Range("F" & _
Worksheets("sheet1").Range("F" & _
Rows.Count).End(xlUp).Row).Offset(, -1).Value = _
Worksheets("sheet1").Range("F" & _
Worksheets("sheet1").Range("F" & _
Rows.Count).End(xlUp).Row).Offset(-1, -1).Value + 1
Else
Worksheets("sheet1").Range("F" & _
Worksheets("sheet1").Range("F" & _
Rows.Count).End(xlUp).Row).Offset(, -1).Value = 1
End If
End Sub