API Documentation > CorelDRAW > 2025-v26 > TextFrame > IVGTextFrame
TextFrame.SetColumns method
Creates columns within the frame
Syntax:
Sub SetColumns(ByVal NumColumns As Long, ByVal EqualColumns As Boolean, ByRef ParamArray WidthsAndGutters() As Variant)
Parameters:
Name Type Description
NumColumns
Long
EqualColumns
Boolean
WidthsAndGutters
Variant
Remarks:
The SetColumns property creates columns within a paragraph-text frame.
Examples:
The following VBA example links frames of paragraph text. In the first frame, and by using an array, it creates three columns of varying widths and equal spacing.
Sub Test()
Dim d As Document
Dim s As Shape
Dim s1 As Shape
Dim s2 As Shape
Dim t As Text
Dim f As TextFrame
Set d = CreateDocument
Set s = d.ActiveLayer.CreateParagraphText(2, 2, 5, 5, String$(750, "Z"))
Set s1 = d.ActiveLayer.CreateParagraphText(5, 5, 8, 8)
Set s2 = d.ActiveLayer.CreateParagraphText(8, 8, 10, 10)
Set t = s.Text
' Link the frames together.
t.Frame.LinkTo s1
s1.Text.Frame.LinkTo s2
' Get the first frame.
Set f = t.Frames(1)
' Set the columns
f.SetColumns 3, False, Array(1, 0.3, 2, 0.3, 3) 
End Sub
The following VBA example links frames of paragraph text. In the first frame, it creates three columns of equal width and spacing.
Sub Test()
Dim d As Document
Dim s As Shape
Dim s1 As Shape
Dim s2 As Shape
Dim t As Text
Dim f As TextFrame
Set d = CreateDocument
Set s = d.ActiveLayer.CreateParagraphText(2, 2, 5, 5, String$(750, "Z"))
Set s1 = d.ActiveLayer.CreateParagraphText(5, 5, 8, 8)
Set s2 = d.ActiveLayer.CreateParagraphText(8, 8, 10, 10)
Set t = s.Text
' Link the frames together.
t.Frame.LinkTo s1
s1.Text.Frame.LinkTo s2
Set f = t.Frames(1)
' Set the columns.
f.SetColumns 3, True, Array(1, 0.3) 
End Sub
The following VBA example links frames of paragraph text. In the first frame, and without using an array, it creates four columns of varying widths.
Sub Test()
Dim d As Document
Dim s As Shape
Dim s1 As Shape
Dim s2 As Shape
Dim t As Text
Dim f As TextFrame
Set d = CreateDocument
Set s = d.ActiveLayer.CreateParagraphText(2, 2, 5, 5, String$(750, "Z"))
Set s1 = d.ActiveLayer.CreateParagraphText(5, 5, 8, 8)
Set s2 = d.ActiveLayer.CreateParagraphText(8, 8, 10, 10)
Set t = s.Text
' Link frames together.
t.Frame.LinkTo s1
s1.Text.Frame.LinkTo s2
Set f = t.Frames(1)
' Set the columns.
f.SetColumns 4, False, 1, 0.3, 1, 0.2, 0.5, 0.1, 0.4 
End Sub