I think that part of your problem is that everytime you write one row and decrement itemQTY1, you then go back to the top of the column to start searching for the next cell.
This kind of construct might be easier
Range("A1").Select
Do
If ActiveCell.Value = vbNullString Then
ActiveCell.Offset(0, 0) = "QTY:"
ActiveCell.Offset(0, 1) = itemQTY1
itemQTY1 = itemQTY1 - 1
End If
ActiveCell.Offset(1, 0).Select
Loop Until itemQTY1 = 0
I just realized that this is also a good example to show how to do the same thing without Selecting (i.e. faster). Declaring a range variable, myCell, and moving it as the Select was moving the Active Cell will achieve the same result without Selecting.
Dim myCell As Range
Set myCell = Range("A1")
Do
If myCell.Value = vbNullString Then
myCell.Offset(0, 0) = "QTY:"
myCell.Offset(0, 1) = itemQTY1
itemQTY1 = itemQTY1 - 1
End If
Set myCell = myCell.Offset(1, 0)
Loop Until itemQTY1 = itemQTY1 - 1
Bookmarks