Hi,

I am currently generating a list inside a Word 2003 document based on choices made in a userform. Each item has a price so I have set up strings for each one:

VB Code:
  1. Dim strProtectionCoversPrice As String, strChainShortenersPrice, strDetachTopBarPrice As String, _
  2.         strFireExtingExtPrice As String, strFireExtingIntPrice As String, strFirstAidKitPrice As String, strFlipUpBarPrice As String, _
  3.         strHazChemPrice As String, strHighTippingPrice As String, strHoldToRunPrice As String, strInCabCtrlsPrice As String, _
  4.         strLoadCellHangerPrice As String, strLoadCellSubEquipPrice As String, strAddPrinterPrice As String, _
  5.         strNetBoxBasic620Price As String, strNetBoxBasic880Price As String, strNetBoxDropDownPrice As String, _
  6.         strPressureFilterPrice As String, strRearLightProtectionPrice As String, strRevBuzzerPrice As String, _
  7.         strRevCameraPrice As String, strBeaconPrice As String, strHyTowerPrice As String, strWingSPRearBogiePrice As String, _
  8.         strWingSRearBogiePrice As String, strWingPRearAxlePrice As String, strWingPRearBogiePrice As String, _
  9.         strWingPRearSteerPrice As String, strToolboxPrice As String, strWinchPrice As String, _
  10.         strWorkLightSinglePrice As String, strWorkLightTwinPrice As String, strFinishPaintEquipPrice As String
  11.  
  12.     strProtectionCoversPrice = "100.00"
  13.     strChainShortenersPrice = "200.00"
  14.     strDetachTopBarPrice = "300.00"
  15.     strFireExtingExtPrice = "400.00"
  16.     strFireExtingIntPrice = "500.00"
  17.     strFirstAidKitPrice = "600.00"
  18.     strFlipUpBarPrice = "700.00"
  19.     strHazChemPrice = "800.00"
  20.     strHighTippingPrice = "900.00"
  21.     strHoldToRunPrice = "50.00"
  22.     strInCabCtrlsPrice = "1000.00"
  23.     strLoadCellHangerPrice = "2000.00"
  24.     strLoadCellSubEquipPrice = "3000.00"
  25.     strAddPrinterPrice = "300.00"
  26.     strNetBoxBasic620Price = "100.00"
  27.     strNetBoxBasic880Price = "110.00"
  28.     strNetBoxDropDownPrice = "175.00"
  29.     strPressureFilterPrice = "150.00"
  30.     strRearLightProtectionPrice = "100.00"
  31.     strRevBuzzerPrice = "50.00"
  32.     strRevCameraPrice = "350.00"
  33.     strBeaconPrice = "50.00"
  34.     strHyTowerPrice = "1500.00"
  35.     strWingSPRearBogiePrice = "250.00"
  36.     strWingSRearBogiePrice = "350.00"
  37.     strWingPRearAxlePrice = "100.00"
  38.     strWingPRearBogiePrice = "200.00"
  39.     strWingPRearSteerPrice = "125.00"
  40.     strToolboxPrice = "95.00"
  41.     strWinchPrice = "500.00"
  42.     strWorkLightSinglePrice = "50.00"
  43.     strWorkLightTwinPrice = "75.00"
  44.     strFinishPaintEquipPrice = "900.00"

The contents of the list will vary depending on choices made in a userform. If the items checkbox is not selected, but is enabled, then the item will go in the list:

VB Code:
  1. Dim strProtectionCovers As String, strChainShorteners, strDetachTopBar As String, _
  2.         strFireExtingExt As String, strFireExtingInt As String, strFirstAidKit As String, strFlipUpBar As String, _
  3.         strHazChem As String, strHighTipping As String, strHoldToRun As String, strInCabCtrls As String, _
  4.         strLoadCellHanger As String, strLoadCellSubEquip As String, strAddPrinter As String, _
  5.         strNetBoxBasic620 As String, strNetBoxBasic880 As String, strNetBoxDropDown As String, _
  6.         strPressureFilter As String, strRearLightProtection As String, strRevBuzzer As String, _
  7.         strRevCamera As String, strBeacon As String, strHyTower As String, strWingSPRearBogie As String, _
  8.         strWingSRearBogie As String, strWingPRearAxle As String, strWingPRearBogie As String, _
  9.         strWingPRearSteer As String, strToolbox As String, strWinch As String, strWorkLightSingle As String, _
  10.         strWorkLightTwin As String, strFinishPaintEquip As String, strAvailableOptions As String
  11.        
  12.     If chkAddProtectionCovers.Enabled = True And chkAddProtectionCovers.Value = False Then
  13.         strProtectionCovers = vbCr & chkAddProtectionCovers.Caption & vbTab & "£" & vbTab & strProtectionCoversPrice
  14.     End If
  15.    
  16.     If chkAddChainShorteners.Enabled = True And chkAddChainShorteners.Value = False Then
  17.         strChainShorteners = vbCr & chkAddChainShorteners.Caption & vbTab & "£" & vbTab & strChainShortenersPrice
  18.     End If
  19.    
  20.     If chkAddDetachTopBar.Enabled = True And chkAddDetachTopBar.Value = False Then
  21.         strDetachTopBar = vbCr & chkAddDetachTopBar.Caption & vbTab & "£" & vbTab & strDetachTopBarPrice
  22.     End If
  23.    
  24.     If chkAddFireExtingExt.Enabled = True And chkAddFireExtingExt.Value = False Then
  25.         strFireExtingExt = vbCr & chkAddFireExtingExt.Caption & vbTab & "£" & vbTab & strFireExtingExtPrice
  26.     End If
  27.    
  28.     If chkAddFireExtingInt.Enabled = True And chkAddFireExtingInt.Value = False Then
  29.         strFireExtingInt = vbCr & chkAddFireExtingInt.Caption & vbTab & "£" & vbTab & strFireExtingIntPrice
  30.     End If
  31.    
  32.     If chkAddFirstAidKit.Enabled = True And chkAddFirstAidKit.Value = False Then
  33.         strFirstAidKit = vbCr & chkAddFirstAidKit.Caption & vbTab & "£" & vbTab & strFirstAidKitPrice
  34.     End If
  35.    
  36.     If chkAddFlipUpBar.Enabled = True And chkAddFlipUpBar.Value = False Then
  37.         strFlipUpBar = vbCr & chkAddFlipUpBar.Caption & vbTab & "£" & vbTab & strFlipUpBarPrice
  38.     End If
  39.    
  40.     If chkAddHazChem.Enabled = True And chkAddHazChem.Value = False Then
  41.         strHazChem = vbCr & chkAddHazChem.Caption & vbTab & "£" & vbTab & strHazChemPrice
  42.     End If
  43.    
  44.     If chkAddHighTipping.Enabled = True And chkAddHighTipping.Value = False Then
  45.         strHighTipping = vbCr & chkAddHighTipping.Caption & vbTab & "£" & vbTab & strHighTippingPrice
  46.     End If
  47.    
  48.     If chkAddHoldToRun.Enabled = True And chkAddHoldToRun.Value = False Then
  49.         strHoldToRun = vbCr & chkAddHoldToRun.Caption & vbTab & "£" & vbTab & strHoldToRunPrice
  50.     End If
  51.    
  52.     If chkAddInCabCtrls.Enabled = True And chkAddInCabCtrls.Value = False Then
  53.         strInCabCtrls = vbCr & chkAddInCabCtrls.Caption & vbTab & "£" & vbTab & strInCabCtrlsPrice
  54.     End If
  55. and so on.....

The list is inserted at a bookmark using another bookmark, that is all the choices, although any null strings will be ignored.

VB Code:
  1. strAvailableOptions = strProtectionCovers & strChainShorteners & strDetachTopBar & _
  2.         strFireExtingExt & strFireExtingInt & strFirstAidKit & strFlipUpBar & strHazChem & _
  3.         strHighTipping & strHoldToRun & strInCabCtrls & strLoadCellHanger & strLoadCellSubEquip & _
  4.          strAddPrinter & strNetBoxBasic620 & strNetBoxBasic880 & strNetBoxDropDown & _
  5.         strPressureFilter & strRearLightProtection & strRevBuzzer & strRevCamera & strBeacon & _
  6.         strHyTower & strWingSPRearBogie & strWingSRearBogie & strWingPRearAxle & strWingPRearBogie & _
  7.         strWingPRearSteer & strToolbox & strWinch & strWorkLightSingle & strWorkLightTwin & strFinishPaintEquip

The method works, but this seems a very long winded and disorganised way of doing things. With a previous and similar problem DKenny kindly provided a solution "building a table on the fly." However, in this instance I have to assign unique price to each item as well so can't see how I can apply that solution.

Any suggestions or pointers would be most welcome.