Hi HarrietEllen,
I changed it to this, wich does exact the same exept the row mistake offcourse 
Sub MoveStockToTable()
'
' MoveStockToTable Macro
' Moves
'
Dim arr(7) As Variant, rng As Range, cel As Range, I As Long
' select input
Sheets("Stock In").Activate
Set rng = Range("C4:C9")
'get data from input
I = 0
For Each cel In rng
arr(I) = cel.Value
I = I + 1
Next cel
'Go to Database
Worksheets("Sheet4").Activate
'find first empty row after Header row
I = Worksheets("Sheet4").Columns(1).Find(What:=vbNullString, Lookat:=xlWhole, After:=Worksheets("Sheet4").Range("A3")).Row
Set rng = Range(Cells(I, 1), Cells(I, 6))
'put collected data in found open row
I = 0
For Each cel In rng
cel = arr(I)
I = I + 1
Next cel
End Sub
But i made an effort to make it a bit smarter with updating the Stock by searching the ID first and if its in the data just add to the stock
Sub MoveStockToTable()
'
' MoveStockToTable Macro
' Moves
' checks for existing ID
Dim arr(7) As Variant, rng As Range, cel As Range, I As Long, DataExists As Boolean
' select input
Sheets("Stock In").Activate
Set rng = Range("C4:C9")
'get data from input
I = 0
For Each cel In rng
arr(I) = cel.Value
I = I + 1
Next cel
'Go to Database
Worksheets("Sheet4").Activate
'If Id already in data just add to stock
On Error Resume Next
I = Worksheets("Sheet4").Columns(1).Find(What:=arr(0), Lookat:=xlWhole, After:=Worksheets("Sheet4").Range("A3")).Row
On Error GoTo 0
If I = 0 Then
'find first empty row after Header row
I = Worksheets("Sheet4").Columns(1).Find(What:=vbNullString, Lookat:=xlWhole, After:=Worksheets("Sheet4").Range("A3")).Row
Else
DataExists = True
End If
If DataExists Then
'if ID found only update Stock
Set cel = Range(Cells(I, 6), Cells(I, 6))
cel.Value = cel.Value + arr(5)
Else
Set rng = Range(Cells(I, 1), Cells(I, 6))
'put collected data in found open row
I = 0
For Each cel In rng
cel = arr(I)
I = I + 1
Next cel
End If
End Sub
I hope you can use it.
ps.
When adding this new code in the same page you might want to change the name of the old macro
Bookmarks