范围级别的自动调整方法失败(运行时间错误1004)

这只是我的代码的一部分。 此处的文本框中的值已经被复制到银行authentication工作表中的特定单元格。 我需要确保单元格C5是特别适合的,而不pipe我在文本框中input的文本的长度。 我试图与细胞交换范围无济于事。 这个问题似乎很简单,但我不知道为什么它不工作…

Dim counterparty As String counterparty = Sheet1.txt1.Text Range("C5").Value = counterparty Sheets("Bank Certification").Select Range("C5").Select Selection.AutoFit 

尝试

 Dim counterparty As String counterparty = Sheet1.txt1.Text Range("C5").Value = counterparty Sheets("Bank Certification").Select Columns("C:C").Autofit 

其他答案正确地说,AutoFit必须与列一起使用,而不仅仅是一个单元格。 然而,使用AutoFit有一些细微的差别,直到我开始试验才开始了解。

以下两条语句中的任何一条将使用列C中的所有值来自动调整列的宽度。 这意味着,如果列C中某个其他单元格(例如C10)中的值比C5中的值更宽,则它将使列适合C列中最宽的单元格 (例如C10)。

 Range("C5").EntireColumn.AutoFit ' Will fit to widest cell in column Range("C:C").AutoFit ' Will fit to widest cell in column 

如果你想适合1单元格 (或一定范围的单元格,但不是整列或列)的列,使用这样的语句:

 Range("C5").Columns.AutoFit ' Will fit column C to width of cell C5 

当然,当你可以这样写这样的代码时总是更好的forms:

  1. 完全限定范围,除非您确定只能使用一张工作表
  2. 使用命名范围或范围对象。

例如:

 Workbooks("MyWorkbook.xlsm").Sheets("Sheet1").Range("MyData").Columns.AutoFit ' or Set AutoFitRange = Workbooks("MyWorkbook.xlsm").Sheets("Sheet1").Range("C5") AutoFitRange.Columns.AutoFit