使用ListObjects(1).ListColumns时如何设置列宽?

时间:2014-04-30 14:48:17

标签: excel vba excel-vba

这是有问题的代码......

Sub DoStuff()

  Dim objSheet As Worksheet
  Dim objStr As String

  Set objSheet = ActiveSheet
  objStr = objSheet.ListObjects(1).Name
  If objStr = "TaskTable" Then
     With objSheet.ListObjects(1)   ' Format for Tasks
        .ListColumns.Add Position:=3
        .HeaderRowRange(3) = "Status Image"  
        'Resize here

问题是我无法弄清楚属性/方法/其他设置列表对象中特定列的列宽。

2 个答案:

答案 0 :(得分:2)

找到您正在寻找的属性的一个好方法是在代码中设置断点(左键单击IDE中最左侧的灰色列),并在调试期间使用本地窗口。

例如,如果在行.HeaderRowRange(3) = "Status Image"处设置断点,并且您运行代码,则代码将在该行停止。打开本地窗口(查看,然后是本地)。您必须深入了解一下,但在objSheet下,您将看到所有正在使用的属性,包括ListObjects。深入研究ListObjects,Item1(代码中的TaskTable),ListColumns,Item3(代码中添加的列),Range和ColumnWidth,您将看到可以使用的属性(作为Variant或Double)。

要在代码中插入,请添加以下内容代替'Resize here评论:

.ListColumns(3).Range.ColumnWidth = x

其中" x"是列的大小。有关ColumnWidth属性的详细信息,请参阅here

答案 1 :(得分:0)

使用AutoFit属性。

With ActiveSheet.ListObjects("Table Name")
   .ListColumns.Add(3).Name = "Status Image"
   .ListColumns("Status Image").Range.Columns.AutoFit
End With