This documentation is archived and is not being maintained.

Application.ChangeColumnDataType Method (Project)

Changes the data type of a local custom field column in a table.

Version Added: Project 2010

expression .ChangeColumnDataType(Type, Column)

expression An expression that returns an Application object.




Data Type





Specifies the type of the custom field data. The value can be one of the PjFieldTypes constants. The default value is 0 (pjCostField).




Specifies the absolute column location. A value of 0 changes the data type of a column in the left-most position, if that column is a local custom field. If the first column is locked, the left-most position is the first column after the locked column. The default value is the selected column.

Return Value


ChangeColumnDataType requires a custom field column to be selected. To manually change the data type of a custom field column, add a custom field column to a table in a view, right-click the column header, and then click Data Type.

To use the following example, create a project with several tasks, and then open the Gantt Chart view. The CreateTestTable macro creates a task table that has four columns. The first column with the ID field is locked. The second column has the title Task Name, the third column contains the Text1 task custom field, and the fourth column contains the Number1 custom field. The macro assigns the table to the current view, and then adds text and number values to the task custom fields.

  1. Run the CreateTestTable macro. The Text1 custom field value of the first task is 42 X.

  2. Run the SwitchNumberAndText macro. The macro switches the headings and types of the two custom fields.

    Note Note

    Because the value of the Text1 custom field in the first task is 42 X, when ChangeColumnDataType tries to convert that column to the Number1 custom field, Project shows an error dialog box with the message, Converting this data will cause errors. The contents of 1 records will be deleted. Do you want to continue anyway?

  3. To continue with the conversion, click Yes in the error dialog box. When the Text1 custom field changes to the Number1 custom field, the value 42 X changes to 0.

  4. To change back to a standard table in the Gantt Chart view, right-click the Select All cell (the unnamed top-left cell in the table), and then select a different table in the drop-down list.

Sub CreateTestTable() 
 Dim t As Task 
 Dim n As Integer 
 TableEditEx Name:="Task Test Table", TaskTable:=True, Create:=True, FieldName:="ID", _ 
 Width:=5, ShowInMenu:=True, HeaderAutoRowHeightAdjustment:=True, _ 
 TableEditEx Name:="Task Test Table", TaskTable:=True, NewFieldName:="Name", Title:="Task Name" 
 TableEditEx Name:="Task Test Table", TaskTable:=True, NewFieldName:="Text1" 
 TableEditEx Name:="Task Test Table", TaskTable:=True, NewFieldName:="Number1" 
 TableEditEx Name:="Task Test Table", TaskTable:=True, LockFirstColumn:=True 
 TableApply Name:="Task Test Table" 
 n = 42 
 For Each t In ActiveProject.Tasks 
 If n = 42 Then 
 t.Text1 = CStr(n) & " X" 
 t.Text1 = CStr(n) 
 End If 
 t.Number1 = n 
 n = n + 2 
 Next t 
End Sub 
Sub SwitchNumberAndText() 
 SelectTaskColumn Column:="Number1" 
 ChangeColumnDataType Type:=pjTextField 
 SelectTaskColumn Column:="Text1" 
 ChangeColumnDataType Type:=pjNumberField 
End Sub