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

Ben*_*ico 10 excel vba excel-vba

这只是我的代码的一部分.此处文本框中的值已经被复制到银行认证工作表中的特定单元格.无论文本框中输入的文本长度如何,我都需要确保单元格C5是特定的.我尝试与细胞交换范围无济于事.这个问题看起来很简单,但我不知道为什么它不起作用......

Dim counterparty As String  
counterparty = Sheet1.txt1.Text

Range("C5").Value = counterparty 

Sheets("Bank Certification").Select

Range("C5").Select 

Selection.AutoFit
Run Code Online (Sandbox Code Playgroud)

izz*_*ymo 9

尝试

Dim counterparty As String
counterparty = Sheet1.txt1.Text

Range("C5").Value = counterparty

Sheets("Bank Certification").Select

Columns("C:C").Autofit
Run Code Online (Sandbox Code Playgroud)

  • Nope Autofit仅适用于列,因为列中的一个单元格的宽度不能与列的其余部分不同.如果这是您需要的,您可以考虑合并单元格. (2认同)

Gle*_*owa 5

其他答案正确指出,“自动调整”必须与列一起使用,而不仅仅是单元格。但是,在开始实验之前,我对使用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
Run Code Online (Sandbox Code Playgroud)

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

Range("C5").Columns.AutoFit          ' Will fit column C to width of cell C5
Run Code Online (Sandbox Code Playgroud)

当然,在可能的情况下,编写这样的代码总是更好的形式:

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

例如:

Workbooks("MyWorkbook.xlsm").Sheets("Sheet1").Range("MyData").Columns.AutoFit
'  or
Set AutoFitRange = Workbooks("MyWorkbook.xlsm").Sheets("Sheet1").Range("C5")
AutoFitRange.Columns.AutoFit
Run Code Online (Sandbox Code Playgroud)