Application.ChangeColumnDataType method (Project)

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


expression. ChangeColumnDataType( _Type_, _Column_ )

expression An expression that returns an Application object.


Name Required/Optional Data type Description
Type Required PjFieldTypes Specifies the type of the custom field data. The value can be one of the PjFieldTypes constants. The default value is 0 (pjCostField).
Column Optional Variant 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.


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.

  1. 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

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.