LOCAL lcSource, lnCount, lnI, lnJ, lnK FOR lnJ = 1 TO 1000 WITH ThisForm.Grid1 lcSource = .RecordSource .RecordSource = "" lnCount = .ColumnCount FOR lnI = lnCount TO 1 STEP -1 .RemoveObject(.Columns(lnI).Name) ENDFOR FOR lnI = 1 TO 3 .AddObject('Column' + TRANSFORM(lnI), 'Column') IF lnI = 2 .Columns(lnI).AddObject("Combo1", "Combobox") .Columns(lnI).RemoveObject("Text1") .Columns(lnI).CurrentControl = "Combo1" ENDIF .Columns(lnI).Visible = .t. ENDFOR lnK = 1 .RecordSource = (lcSource) FOR lnI = 1 TO 3 DO WHILE lnK <= FCOUNT(lcSource) AND NOT INLIST(TYPE(FIELD(lnK)), "C", "D") IF lnK > FCOUNT(lcSource) EXIT ENDIF lnK = lnK + 1 LOOP ENDDO .Columns(lnI).ControlSource = lcSource + "." + FIELD(lnK) lnK = lnK + 1 ENDFOR ENDWITH ENDFORI have clicked the button several times and got no C5 error. Please try exactly what I did and see if you get the error.