2015-02-27 3 views
8

Это только часть моего кода. значение из текстового поля здесь уже скопировано в конкретную ячейку на листе банковской сертификации. Мне нужно убедиться, что ячейка C5 специально установлена ​​независимо от длины текста, введенного в текстовое поле. Я попытался изменить диапазон с ячейками безрезультатно. Эта проблема, кажется, так просто, но я не знаю, почему это не работает ...Ошибка автоопределения класса диапазона (ошибка времени выполнения 1004)

Dim counterparty As String 
counterparty = Sheet1.txt1.Text 

Range("C5").Value = counterparty 

Sheets("Bank Certification").Select 

Range("C5").Select 

Selection.AutoFit 
+0

Не могли бы вы попробовать переоснащение весь столбец вместо конкретной ячейки. 'Столбцы (« C: C »). AutoFit' – izzymo

ответ

8

Попробуйте

Dim counterparty As String 
counterparty = Sheet1.txt1.Text 

Range("C5").Value = counterparty 

Sheets("Bank Certification").Select 

Columns("C:C").Autofit 
+0

спасибо .. этот видa работает .. ошибка не показывает ... но прямо сейчас, я думаю, автоподдержка применима только к определенной ячейке? как C5! В любом случае, спасибо за ваш ответ! –

+2

Nope Autofit работает только в столбцах, поскольку одна ячейка в столбце не может иметь разную ширину, чем остальная часть столбца. Если это то, что вам нужно, вы можете рассмотреть вопрос о слиянии ячеек. – izzymo

+0

Кроме того, вы можете избавиться от строки 'Sheets(). Select', так как она ничего не покупает. Если вам нужно быть более конкретным: «Рабочие листы (« Банковская сертификация »). Столбцы (« C: C »). Autofit' должен это сделать. – FreeMan

2

Других ответов правильно утверждать, что Автоподбор должен использоваться с колонкой, а не только клетка. Однако есть некоторые нюансы использования 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. Используйте объекты Named Ranges или Range.

Например:

Workbooks("MyWorkbook.xlsm").Sheets("Sheet1").Range("MyData").Columns.AutoFit 
' or 
Set AutoFitRange = Workbooks("MyWorkbook.xlsm").Sheets("Sheet1").Range("C5") 
AutoFitRange.Columns.AutoFit 
Смежные вопросы