Ошибка метода Autofit класса Range (Ошибка времени выполнения 1004)
Это только часть моего кода. значение из текстового поля здесь уже копируется в определенную ячейку на листе банковской сертификации. Мне нужно убедиться, что ячейка C5 специально установлена независимо от длины текста, который я ввел в текстовое поле. Я попытался поменять диапазон с ячейками безрезультатно. Эта проблема кажется такой простой, но я не знаю, почему она не работает...
Dim counterparty As String
counterparty = Sheet1.txt1.Text
Range("C5").Value = counterparty
Sheets("Bank Certification").Select
Range("C5").Select
Selection.AutoFit
2 ответов
попробовать
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
и, конечно, всегда лучше писать такой код, когда вы можете:
- полностью квалифицируйте диапазон, если вы не абсолютно уверены, что будете работать только с одним лист
- используйте именованные диапазоны или объекты диапазона.
например:
Workbooks("MyWorkbook.xlsm").Sheets("Sheet1").Range("MyData").Columns.AutoFit
' or
Set AutoFitRange = Workbooks("MyWorkbook.xlsm").Sheets("Sheet1").Range("C5")
AutoFitRange.Columns.AutoFit