There is absolutely a way, but I find it fairly difficult to write VBA from scratch without some sample data to test on. do you already have your userform working? and the hotkeys assigned? Can you upload a sample workbook?
general pointers for your last question - it's fairly common to declare a long variable which you can set to the last used row with some code like this:
then you can copy values to .Range("A" & lr + 1) to print in the next open row.
remember you'll need to redefine lr at this point (if you're running a loop you can do so at the start of the loop or at the end just do lr = lr + 1)
**Additional info**
As for matching your UPC code, i've been using the find() method quite a bit lately - typically in some sort of a loop along these lines:
(untested)
that could probably be cleaner if you declared a few more variables or resized the ranges or something
Bookmarks