Имя: Пароль:
1C
Админ
Excel: метод SpecialCells неверно определяет последний столбец. Помогите!!!
Ø
0 ОДНик
 
06.07.05
08:22
Обрабатывая файл
ExcelApp.Cells(1,1).SpecialCells(11).Row - возвращает правильное значение;
а
ExcelApp.Cells(1,1).SpecialCells(11).Column - возвращает неправильное значение. И, кто знает, подскажите другие коды и их значения (SpecialCells(11)). Спасибо!
1 Кукуруза
 
06.07.05
08:41
1. Начать запись макроса
2. На листе нажать контрол-вправо
3. Окончить запись макроса
4. Посмотреть кодЪ
.
Cells(...).End(xlToRight).Select
2 Палыч
 
06.07.05
08:41
Пример из хелпа:
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Activate
3 ОДНик
 
06.07.05
08:47
(1) Реализуется не макрос, а идет чтение данных из Ёкселя.
(2) Это пример я видел, но че-то не пойму, на какой вопрос он отвечает?
4 Кукуруза
 
06.07.05
08:48
(3) а!! ржунимагу! тормаз, прочитай еще раз (1)
5 RomaH
 
06.07.05
09:00
   Rows = Ексель.ActiveSheet.UsedRange.Rows.Count;
   Columns = Ексель.ActiveSheet.UsedRange.Columns.Count;
    
   Сообщить("Количество строк = " + Rows + "; Количество колонок = " + Columns);
6 Кукуруза
 
06.07.05
09:01
пусть тогда уже афтар выскажеца, что такое последний столбец
7 Gloom
 
06.07.05
09:12
Метод SpecialCells не учитывает скрытые ячейки, также его нельзя использовать на защищённых листах. Правильный способ - юзать метод UsedRange(). Правда, как в (5) может быть не всегда корректно - кроме общего количества строк/колонок надо ещё учитывать, что диапазон может начинаться не с первой ячейки листа...
8 ОДНик
 
06.07.05
09:13
(4) И что из этого следует?
Sub Macr()
'
'
'
'
    ActiveWindow.LargeScroll ToRight:=1
    Range("O1").Select
End Sub
9 Кукуруза
 
06.07.05
09:15
(8) Ты хочешь сказать что во время записи макроса ты нажал CTRL-вправо?
И прочитай обязательно (6)
10 ОДНик
 
06.07.05
09:23
(6)(9) Ожидаю, что ExcelApp.Cells(1,1).SpecialCells(11).Column должен вернуть номер последнего столбца, содержащего данные. По-моему, я ответил на этот вопрос.
Да, CTRL-вправо нажимал.(открыл нужный файл;начал запись макроса;нажал CTRL-вправо;остановил запись;результат представил тебе)Что не так?
11 Кукуруза
 
06.07.05
09:28
>> Column должен вернуть номер последнего столбца, содержащего данные
блин, пацан, читай (1) последнюю строку
12 Кукуруза
 
06.07.05
09:30
Cells(1, 1).End(xlToRight).column
13 Кукуруза
 
06.07.05
09:33
Или (если бы ты не поленился нажать во время записи макроса CTRL-End):
Cells(1, 1).End(xlLastCell).column
14 ОДНик
 
06.07.05
09:44
(13) Предлагаю вести диалог в спокойной манере. Сначала(1) ты предлагал >>
2. На листе нажать контрол-вправо, а теперь вдруг CTRL-END. Ну, нажал, в макросе такая строка: Range("I13").Select. Да, собственно, проблема уже почти разрешилась, осталось только непонятным, что могло вызвать такое количество эмоций у тебя?
15 Nike
 
06.07.05
09:46
test
16 DES
 
06.07.05
09:57
Знатоки, подскажиет ...
Как скрыть лишие строки и столбцы
делаю так:
  Worksheet.Range("54:65536").EntireRow.Hidden=True;
  Worksheet.Range("K:IV").EntireColumn.Hidden=True;
как скрывать в зависимости от последнего заполненного столбца/строки ?
и как потом выделить "область печати" ?
  Worksheet.PageSetup.PrintArea="$A$1:$I$52";
17 Палыч
 
06.07.05
10:04
(0) Как ты думаешь, какая последняя использованная может быть у ячейки (1,1)? ;-)
А вообще, рекомендую прислушаться к (7).
18 Палыч
 
06.07.05
10:06
(+17) последняя использованная колонка
19 ОДНик
 
06.07.05
10:07
(17) Мне кажется, она же сама. По крайней мере, такой результат возвращают обсуждаемые здесь методы для пустого листа.
20 ОДНик
 
06.07.05
10:09
(+19)В смысле, строка=1, столбец=1
21 Палыч
 
06.07.05
10:23
(20) А в чем тогда проблема?
22 Кукуруза
 
06.07.05
10:25
(14) эмоции вызвал твой тормозизм в (3).
это первое.
второе.
>> На листе нажать контрол-вправо, а теперь вдруг CTRL-END
xlToRight - ctrl-right
или
xlLastCell - ctrl-end
имеют разный смысл. Первый ищет правую границу в текущем диапазоне, второй во всем диапазоне.
Выбирай что тебе больше подходит. И не пешы гона.
23 Djkxfhf
 
06.07.05
10:38
http://www.kuban.ru/forum_new/forum9/arhiv/232879.html
.
Excel_Лист = Excel.Worksheets(i);
//просмотрим ячейки одного листа
первИспСтрока = Excel_Лист.UsedRange.Row;
ВсегоСтрок = первИспСтрока + Excel_Лист.UsedRange.Rows.Count -1;
первИспСтолбец = Excel_Лист.UsedRange.Column;
ВсегоСтолбцов = первИспСтолбец + Excel_Лист.UsedRange.Columns.Count -1;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший