Thanks for replying.

The table does not exist in the first instance; and you are correct, I should have given more code.

    ActiveDocument.Paragraphs.Add
    Set myRange = ActiveDocument.Content
    myRange.Collapse Direction:=wdCollapseEnd
    
    ' Create and populate the first table on the form
    ActiveDocument.Tables.Add Range:=myRange, numRows:=2, numColumns:=2
    
    With ActiveDocument.Tables(1)
    
        .Columns(1).PreferredWidth = CentimetersToPoints(4.5)
        .Columns(1).Shading.BackgroundPatternColor = RGB(192, 192, 192)
        
        .Columns(1).Cells(1).Range.ParagraphFormat.Alignment = wdAlignParagraphRight
        .Columns(1).Cells(1).Range.Bold = True
        .Columns(1).Cells(1).Range.Text = "Assignment Title:"
        
        .Columns(1).Cells(2).Range.ParagraphFormat.Alignment = wdAlignParagraphRight
        .Columns(1).Cells(2).Range.Bold = True
        .Columns(1).Cells(2).Range.Text = "Assessor:"
        
        .Columns(2).PreferredWidth = CentimetersToPoints(11.5)
So, as you can see the code creates the table and then sets the properties. The thing is, the code works on one computer but not on another. It is also not a case that it alternates (occasionally working on either, or occasional crashing on both). Equally, if I step through via debug then the code works fine.

I thought VBA was synchronously processed but wonder if there is an element of asynchronous activity here; the table is still being created when this line is executed and so, for that particular instance, the table does not appear to exist when it is trying to define the table size?

If so then is there a way of forcing VBA to wait for the conclusion of an instruction prior to moving on to the next?

Or am I far from the mark here?