I came across this thread Changing the column order in the datasheet portion of a split form (Access 2010) http://www.access-programmers.co.uk/forums/showthread.php?t=231625, but it didn't seem to address how to change the column order programmatically. And while this thread http://www.access-programmers.co.uk/forums/showthread.php?t=195357 showed how to get the column number, it didn't show how to change the order. I took a chance and added an equal sign after it and it worked. Here is how:
After someone has dragged a field or fields around on the datasheet, this code is set up to restore the col order to it's original layout by clicking on a button. I imagine that it could be taken a step further and put into a table with multiple col orders based on user preferences and then via recordset could reorder the cols.
It's essentially using fieldname.ColumnOrder = x
And here is some code on load that will adjust the col widths of the datasheet. Did some calculations to estimate number of characters for a given font and point size.
After someone has dragged a field or fields around on the datasheet, this code is set up to restore the col order to it's original layout by clicking on a button. I imagine that it could be taken a step further and put into a table with multiple col orders based on user preferences and then via recordset could reorder the cols.
It's essentially using fieldname.ColumnOrder = x
Code:
Private Sub btnResetCols_Click()
'Put subform cols in order that user wanted as default
Forms!frmHVR!frmHVRFilter.Form.txtULTIMATE.ColumnOrder = 3
Forms!frmHVR!frmHVRFilter.Form.txtImmediate.ColumnOrder = 4
Forms!frmHVR!frmHVRFilter.Form.txtDBA.ColumnOrder = 5
Forms!frmHVR!frmHVRFilter.Form.txtSales.ColumnOrder = 6
...
...
End Sub
Code:
Private Sub Form_Load()
'Resize col widths in datasheet view
Const TWIPSTOINCHES = 1440
'TWIPS times (number of inches for 1 character at 8 point Calibri)
Const TWIPSTOCHARWIDTH = TWIPSTOINCHES * 0.06
Me.txtFamilyTree.ColumnWidth = TWIPSTOCHARWIDTH * 5 'desired character width of 5 characters
Me.txtULTIMATE.ColumnWidth = TWIPSTOCHARWIDTH * 25
Me.txtImmediatet.ColumnWidth = TWIPSTOCHARWIDTH * 25
Me.txtCOMPANYNAME.ColumnWidth = TWIPSTOCHARWIDTH * 25
Me.txtWebSite.ColumnWidth = TWIPSTOCHARWIDTH * 20
Me.txtDBA.ColumnWidth = TWIPSTOCHARWIDTH * 20
Me.txtSales.ColumnWidth = TWIPSTOCHARWIDTH * 8
...
...
End Sub