"Index was outside the bounds of the array." and the line " stockArray(itemIndex)(1) = txt2.Text"
I tried to explain this before...

Change the event handler for your textboxes
Code:
.TextChanged
to
Code:
.LostFocus
..............................................................

Code:
 "Object variable or With block variable not set."
is probably due to a change elsewhere..
Only time I could reproduce that was if the listbox was empty..

the problem I'm sure is not in that line of code itself.. But rather it's hanging up on that line because its trying to do something, and one of the components it relies on is missing (like when i had no items in the list box)

on a separate note.. I noticed the sub ListBox1_SelectedIndexChanged will throw an out of bounds exception if you click the listbox where there is no item. easy fix...

first line of code could check for a non-item index. So:
Code:
If sender.SelectedIndex < 1 Then Exit Sub