Application.ChangeColumnDataType Method (Project)
Changes the data type of a local custom field column in a table.
Version Information
Version Added: Project 2010
Syntax
expression .ChangeColumnDataType(Type, Column)
expression An expression that returns an Application object.
Parameters
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
Boolean
Remarks
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.
Example
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.
Run the CreateTestTable macro. The Text1 custom field value of the first task is 42 X.
Run the SwitchNumberAndText macro. The macro switches the headings and types of the two custom fields.
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?
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.
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, _ ShowAddNewColumn:=False
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" Else 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