Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.09.2013, 09:36   #1
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию Свойство Columns

Здравствуйте, уважаемые форумчане.
Уже не в первый раз сталкиваюсь с тем, что компилятор не хочет понимать такой синтаксис:
Код:
[A:A].AutoFit
в то время, как
Код:
Columns("A").AutoFit
работает без проблем. Другие свойства столбца, например,
Код:
[A:A].HorizontalAlignment = xlLeft
нормально воспринимаются в любом варианте записи. В чем дело?
P.S. Ведь все мы ленивые, и не хочется употреблять длинные фразы...
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 19.09.2013, 09:54   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

я сталкивался с некорректной работой записи [...] потом тоже самое записанное как range("...") - работало как и предполагалось.
к сожалению не запомнил к чему именно я обращался, но вывод для себя сделал и не смотря на лень пользуюсь range("...")
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 19.09.2013, 10:02   #3
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Я поэтому и спросил. Мало ли... может быть в Excel есть и другие аналогичные неоднозначности. У меня бывали случаи, когда я предлагал код "вслепую", т. е. не имея возможности проверить его работоспособность.
Кстати, при обращении к ячейке (Range("..."), Cells(...), [...]) такого не наблюдалось.
Цитата:
...к сожалению не запомнил к чему именно я обращался...
А жаль... Хотелось бы выяснить и запомнить "проблемные места"...
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 19.09.2013, 10:04   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Есть подозрение, что [A:A] воспринимается как область, а не колонка. Зато [A:A].EntireColumn.AutoFit должно работать корректно.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 19.09.2013, 10:11   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Код:
Есть подозрение, что [A:A] воспринимается как область...
Так оно и есть. Восприниматься должно как диапазон ячеек, но всего столбца "A". Ведь другие (может быть, не все) свойства воспринимаются корректно (например, .HorizontalAlignment). А добавлять .EntireColumn - это еще длиннее.

Предлагаю поделиться опытом сталкиваня с подобными проблемами.
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 19.09.2013 в 10:14.
SAS888 вне форума Ответить с цитированием
Старый 19.09.2013, 10:23   #6
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Может не совсем в тему, но раз уж проблемах разговор
Как-то столкнулся с тем, что в коде не работало имя рабочего листа с пробелом. Типа "Мой лист", а вот "Мой_лист" или "МойЛист" сработало
С тех пор зарекся
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 19.09.2013, 10:24   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Выяснил разницу. DiemonStar абсолютно прав. При обращении "[A:A]", не смотря на то, что это и есть весь столбец, свойства, которых не имеет отдельно взятая ячейка (например, .AutoFit), применять недопустимо.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 19.09.2013, 10:25   #8
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
свойства, которых не имеет отдельно взятая ячейка (например, .AutoFit), применять недопустимо.
Спасибо, запомним.
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 19.09.2013, 10:32   #9
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Так оно и есть. Восприниматься должно как диапазон ячеек, но всего столбца "A". Ведь другие (может быть, не все) свойства воспринимаются корректно (например, .HorizontalAlignment). А добавлять .EntireColumn - это еще длиннее.
посмотрим помощь по AutoFit
Цитата:
Remarks
The Range object must be a row or a range of rows, or a column or a range of columns. Otherwise, this method generates an error.
если я правильно понимаю, [A:A] эквивалентно записи Evaluate("A:A"). результатом работы функции становится объект типа Range("A1:A65535"), который воспринимается набором ячеек, а не колонкой и срабатывает ограничение в работе метода. Т.е. все методы привязанные к строкам и колонкам будут иметь такие ограничения в случае короткой записи.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 19.09.2013, 11:16   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

1.Что заметил из "косяков" - не обращайтесь к листам по кодовому имени, если это имя не изменяли. На машине с другим Экселем это имя может оказаться тоже другим.
2.На Планете приводил пример - совершенно всюду одинаковые два числа (по формату, по значению в строке формул, в переменной/массиве из этого диапазона) при сравнении кодом оказываются не равны! Если перевести оба в string - равны.
Ну тут явный косяк данных - одно из чисел импортировалось из неведомого источника. Но вот как теперь работать?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
QTreeWidget columns artush1984 Qt и кроссплатформенное программирование С/С++ 2 17.04.2012 11:16
Columns romanzi Общие вопросы Delphi 1 16.12.2011 00:45
C#. Columns listviewe StudentPolitech Общие вопросы .NET 2 15.11.2010 16:31
Columns(i).Select Maxx Microsoft Office Excel 3 01.09.2009 15:31
ListBox.Columns LeoN Общие вопросы Delphi 2 01.12.2007 13:25