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

时间:2015-02-27 06:58:16

标签: excel excel-vba vba

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

Dim counterparty As String  
counterparty = Sheet1.txt1.Text

Range("C5").Value = counterparty 

Sheets("Bank Certification").Select

Range("C5").Select 

Selection.AutoFit

2 个答案:

答案 0 :(得分:9)

尝试

Dim counterparty As String
counterparty = Sheet1.txt1.Text

Range("C5").Value = counterparty

Sheets("Bank Certification").Select

Columns("C:C").Autofit

答案 1 :(得分:4)

其他答案正确说明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

当然,如果可以的话,编写这样的代码总是更好的形式:

  1. 完全符合范围,除非您完全确定您只使用一个工作表
  2. 使用命名范围或范围对象。
  3. 例如:

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