Excel 如何使用ColumnWidth?

Excel 如何使用ColumnWidth?,excel,vba,Excel,Vba,我无法明确设置列宽 我尝试了以下操作,但不断得到与应用程序定义错误或对象定义错误相同的错误: Dim curr_ws As Worksheet Set curr_ws = Worksheets("newsheet") curr_ws.Range("B1").ColumnWidth = 342 curr_ws.Range("B").ColumnWidth = 342 curr_ws.Columns(2).ColumnWidth = 342 如果不清楚的话,我试图显式地将B列的宽度设置为342像素

我无法明确设置列宽

我尝试了以下操作,但不断得到与
应用程序定义错误或对象定义错误相同的错误:

Dim curr_ws As Worksheet
Set curr_ws = Worksheets("newsheet")
curr_ws.Range("B1").ColumnWidth = 342
curr_ws.Range("B").ColumnWidth = 342
curr_ws.Columns(2).ColumnWidth = 342
如果不清楚的话,我试图显式地将B列的宽度设置为342像素


我还不清楚这是
范围
对象的属性还是
对象的属性,因为在线示例与官方文档中显示的略有不同

最后一个应该是正确的。这是因为一个单元格的列宽度不能更改。因此,您必须使用“Columns对象”。我不知道你是否知道,但你也可以在宏记录器的帮助下找到答案。我还建议您使用intern vba sheetname,这使代码对更改sheetname非常健壮

Sheets("tabel1").Columns("B").ColumnWidth = 342
如果此选项不起作用,请尝试以下操作:

Sheets("tabel1").Columns("B:B").ColumnWidth = 342

我希望这是一个合适的解决方案。

最后一个应该是正确的。这是因为一个单元格的列宽度不能更改。因此,您必须使用“Columns对象”。我不知道你是否知道,但你也可以在宏记录器的帮助下找到答案。我还建议您使用intern vba sheetname,这使代码对更改sheetname非常健壮

Sheets("tabel1").Columns("B").ColumnWidth = 342
如果此选项不起作用,请尝试以下操作:

Sheets("tabel1").Columns("B:B").ColumnWidth = 342

我希望这是一个合适的解决方案。

最后一个应该可以。它是Range对象的一个属性(没有Columns对象),但它是以点为单位测量的,所以你必须转换为像素。啊,一定是这样的-点太大了,因为我认为它是以像素为单位的。谢谢列宽和列宽是不同的!有关列宽单位及其转换的详细信息,请参见。您将列宽设置为342,标准字体的列宽太大,将出错。单位不是以像素为单位,而是一个普通样式字符的宽度。尝试将宽度设置为255或更低,看看是否可以解决问题。这是微软的文档,最后一个应该没问题。它是Range对象的一个属性(没有Columns对象),但它是以点为单位测量的,所以你必须转换为像素。啊,一定是这样的-点太大了,因为我认为它是以像素为单位的。谢谢列宽和列宽是不同的!有关列宽单位及其转换的详细信息,请参见。您将列宽设置为342,标准字体的列宽太大,将出错。单位不是以像素为单位,而是一个普通样式字符的宽度。尝试将宽度设置为255或更低,看看是否可以解决问题。以下是Microsoft关于请删除您的答案的文档,原因如下:a)可以在单个单元格上更改列宽(测试!),b)引用内部工作表名称是一个好主意,但您可以编写
Sheet1.Columns
tabel1.Columns
,c)ColumnWidth的最大可用值为255。由于以下原因,请删除您的答案:a)可以在单个单元格上更改ColumnWidth(测试!),b)引用内部工作表名称是一个好主意,但之后您可以编写
Sheet1.Columns
tabel1.Columns
,c)ColumnWidth的最大可用值为255。