设置列宽时由应用程序定义或对象定义的错误

时间:2018-08-22 14:49:36

标签: vba excel-vba

我正在尝试运行此代码段,以将从第一个列到最后一个列的列宽设置为4。

我收到错误消息:应用程序定义或对象定义的错误

Dim firstRow, firstCol As Integer
Dim lastRow, lastCol As Integer
Dim row, column As Integer

firstRow = start.row
firstCol = start.column
lastRow = iMax
lastCol = jMax

'Set column width to 4
Sheets("Tree").Columns(Cells(firstRow, firstCol).EntireColumn, Cells(firstRow, lastCol - 1).EntireColumn).ColumnWidth = 4

其中jMax和iMax是2个整数。有什么帮助吗?谢谢!

1 个答案:

答案 0 :(得分:1)

Worksheet.Columns以列字母或索引作为参数。

因此Sheets("Tree").Columns("A:B").ColumnWidth = 4Sheets("Tree").Columns(2).ColumnWidth = 4是正确语法的示例。但是您这里有Range个参数。

如果将Columns更改为Range,并且所有变量都具有预期值,则最后一行应该起作用。

一些建议:

  • Integer更改为Long-Excel的行数超过Integer不能处理,并且使用Integer并没有真正的好处。
  • 使用变量声明,您需要显式声明每个变量的类型,而不仅是在末尾-Dim firstRow as Long, firstCol as Long。对于Dim firstRow, firstCol as LongfirstRow实际上是Variant
  • 由于Range已经具有RowColumn属性,因此最好避免将这些术语用作变量。