the best way to do this is to change your 2x2 text boxes into an array.
Name the first text box like you want (txtbox is ok, but it does not say what is used for, be more verbose) and set its Index property to 0. Rename the second with the same name, and
VB will automatically set the Index property to 1, and continue for all text boxes.
Now the loop will be:
set txtboxxy = txtbox(x + y* numberOfColumns)
As an alternative, you can use the Controls property to get a control by name:
set txtboxxy = me.controls("txtbox" & format(x,"00") & format(y,"00")
My preferred way will be to use a MSFlexGrid instead of a bunch of textBoxes (this is what a grid is for: to display values in a... grid)
PS: all the code is not tested
PPS: remember to use the "set" keyword to assign an object to a variable
Marco