First for your trick: Have you only 9 possible colors? What if you had 10?
But as you are clever you could extend the storing like 401020304.
Then you could further think of extending the storing in strings like:
1123,1124,1233
each 4 digitis being paper color1, paper quality, page1 color, page 2 color.
You could use a text field of length 30 in the database to store.
To determine how many pages there are in the string you use the Split function.
Code:
  Dim a$(), nPages%
  a = Split(PageInfo, ",")
  nPages = UBound(a)
This returns you the number of pages and makes you the partial codes available in the string array.
a(0) being the first, a(1) the second page and so on.

On screen it seems you need as many combo boxes, BUT you would arrange them in arrays as well.
You make only the first boxes cboPaperCol, cboPaperQual, cboPage1Col, cboPage2Col.
These you give each an Index of 0 what makes them to the first elements of 4 control arrays.

If you want to have all six rows of combos on screen from the beginning, (what is the easiest approach) you just copy the four and paste them in repeatedly five times and put them in place. There you are.

Now your routines can work in loops to address the combos for making the codes.
Code:
  Dim i%,  codes$(), c$, PageInfo$
  For i = 0 to nPages - 1
      c = cboPaperCol(i).ListIndex + 1 & cboPaperQual.ListIndex + 1 & cboPage1Col.ListIndex + 1 & cboPage2Col.ListIndex + 1
  Next
' now combine the codes
  PageInfo = Join(codes, ",")
But concerning databases, in today's environments I don't think it cares if some space is wasted, except you expect billions records in your database.
In the above concept you waste some space, too. You have to make the PageInfo field 30 characters (6x4 characters, plus max 5 commas). So you never fill all characters in every record.
If you had 6 individual fields, you could make them exactly 4 characters long, so the waist is actually small.