Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Разный результат для разных расширений (xls и xlsx) - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Разный результат для разных расширений (xls и xlsx)
Roman777 Дата: Четверг, 03.09.2015, 14:10 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Добрый день!
Пробовал сделать что-то вроде ВПР и столкнулся с такой ситуацией. Зачастую приходится работать с разными книгами (сВПРить что-то из одной книги в другу). Для примера изложу на Коде-примере:

Почему при запуске макроса из одной книги, но выделении диапазона в другой книге, макрос будет работать только с форматами xlsx? Как можно сделать, чтобы при таком запуске он работал и с тем и с другим форматом?


Много чего не знаю!!!!
 
Ответить
СообщениеДобрый день!
Пробовал сделать что-то вроде ВПР и столкнулся с такой ситуацией. Зачастую приходится работать с разными книгами (сВПРить что-то из одной книги в другу). Для примера изложу на Коде-примере:

Почему при запуске макроса из одной книги, но выделении диапазона в другой книге, макрос будет работать только с форматами xlsx? Как можно сделать, чтобы при таком запуске он работал и с тем и с другим форматом?

Автор - Roman777
Дата добавления - 03.09.2015 в 14:10
_Boroda_ Дата: Четверг, 03.09.2015, 14:25 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16912
Репутация: 6616 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Разное количество строк
Попробуйте так
[vba]
Код
i2_n = Tablica2.Cells(Tablica2.Rows.Count, Artikul2_column).End(xlUp).Row
[/vba]
В куске Tablica2.Cells Вы смотрите на диапазон Tablica2, а в куске Rows.Count Вы смотрите на количество строк в том файле, где находится сам макрос. если Tablica2 в xls, а сам файл в xlsm, то мы пытаемся засунуть 1048576 строк в 65536


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеРазное количество строк
Попробуйте так
[vba]
Код
i2_n = Tablica2.Cells(Tablica2.Rows.Count, Artikul2_column).End(xlUp).Row
[/vba]
В куске Tablica2.Cells Вы смотрите на диапазон Tablica2, а в куске Rows.Count Вы смотрите на количество строк в том файле, где находится сам макрос. если Tablica2 в xls, а сам файл в xlsm, то мы пытаемся засунуть 1048576 строк в 65536

Автор - _Boroda_
Дата добавления - 03.09.2015 в 14:25
SLAVICK Дата: Четверг, 03.09.2015, 14:37 | Сообщение № 3
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Не работает, потому что в книгах XLS нельзя указывать:
столбцы далее 256-го
строки далее 65536
[vba]
Код
Sub Проверка()
Dim Tablica2 As Range, i&
Set Tablica2 = Application.InputBox("Укажите столбцы таблицы-исходника", "Таблица-исходник", Type:=8)
Application.ScreenUpdating = False
Artikul2_column = 1
MsgBox (Tablica2.Cells(1, Artikul2_column).Address)
If ThisWorkbook.FileFormat <= xlExcel8 Then i = 65536 Else i = Tablica2.Rows.Count
i2_n = Tablica2.Cells(i, Artikul2_column).End(xlUp).Row
MsgBox (i2_n)
Application.ScreenUpdating = True
End Sub
[/vba]

ХМ заметил что у Вас в коде:[vba]
Код

Tablica2.Cells - все ячейки выбранного диапазона.
может лучше:
Tablica2.Parent.Cells - все ячейки листа
[/vba]


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Четверг, 03.09.2015, 14:46
 
Ответить
СообщениеНе работает, потому что в книгах XLS нельзя указывать:
столбцы далее 256-го
строки далее 65536
[vba]
Код
Sub Проверка()
Dim Tablica2 As Range, i&
Set Tablica2 = Application.InputBox("Укажите столбцы таблицы-исходника", "Таблица-исходник", Type:=8)
Application.ScreenUpdating = False
Artikul2_column = 1
MsgBox (Tablica2.Cells(1, Artikul2_column).Address)
If ThisWorkbook.FileFormat <= xlExcel8 Then i = 65536 Else i = Tablica2.Rows.Count
i2_n = Tablica2.Cells(i, Artikul2_column).End(xlUp).Row
MsgBox (i2_n)
Application.ScreenUpdating = True
End Sub
[/vba]

ХМ заметил что у Вас в коде:[vba]
Код

Tablica2.Cells - все ячейки выбранного диапазона.
может лучше:
Tablica2.Parent.Cells - все ячейки листа
[/vba]

Автор - SLAVICK
Дата добавления - 03.09.2015 в 14:37
Roman777 Дата: Четверг, 03.09.2015, 14:51 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
_Boroda_, SLAVICK, Спасибо большое!


Много чего не знаю!!!!
 
Ответить
Сообщение_Boroda_, SLAVICK, Спасибо большое!

Автор - Roman777
Дата добавления - 03.09.2015 в 14:51
Roman777 Дата: Четверг, 03.09.2015, 14:56 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Подскажите, но почему если я ставил красную точку (закладка вродебы называется) напротив:
[vba]
Код
i2_n = Tablica2.Cells(Rows.Count, Artikul2_column).End(xlUp).Row
[/vba]
И после отработки кода до закладки я снова нажимал отработать коду дальше, этой ошибки не возникало.


Много чего не знаю!!!!
 
Ответить
СообщениеПодскажите, но почему если я ставил красную точку (закладка вродебы называется) напротив:
[vba]
Код
i2_n = Tablica2.Cells(Rows.Count, Artikul2_column).End(xlUp).Row
[/vba]
И после отработки кода до закладки я снова нажимал отработать коду дальше, этой ошибки не возникало.

Автор - Roman777
Дата добавления - 03.09.2015 в 14:56
SLAVICK Дата: Четверг, 03.09.2015, 15:03 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Не совсем понял вопрос- посмотрите файл из приложения - нажмите кнопку и выделите желтые диапазоны - увидите разницу :D
К сообщению приложен файл: ReadMSOfficeLog.xls (38.0 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеНе совсем понял вопрос- посмотрите файл из приложения - нажмите кнопку и выделите желтые диапазоны - увидите разницу :D

Автор - SLAVICK
Дата добавления - 03.09.2015 в 15:03
Roman777 Дата: Четверг, 03.09.2015, 15:07 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
SLAVICK, Нет-нет, я понял принцип Вашей вставки условия в код и ошибку свою, просто не ясно, почему в режиме отладки, код сработал и на изначальном варианте...)


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Четверг, 03.09.2015, 15:08
 
Ответить
СообщениеSLAVICK, Нет-нет, я понял принцип Вашей вставки условия в код и ошибку свою, просто не ясно, почему в режиме отладки, код сработал и на изначальном варианте...)

Автор - Roman777
Дата добавления - 03.09.2015 в 15:07
_Boroda_ Дата: Четверг, 03.09.2015, 15:17 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 16912
Репутация: 6616 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Предположу, что
после отработки кода до закладки
Вы переходили в другую книгу, чтобы посмотреть. А тогда (если код у Вас в обычном модуле, а не в модуле листа или книги) Rows.Count даст количество строк АКТИВНОГО на данный момент листа (выше я немного неверно написал). А активен у Вас становился лист, в котором Таблица2 и тогда количество строк совпадает и все нормально.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПредположу, что
после отработки кода до закладки
Вы переходили в другую книгу, чтобы посмотреть. А тогда (если код у Вас в обычном модуле, а не в модуле листа или книги) Rows.Count даст количество строк АКТИВНОГО на данный момент листа (выше я немного неверно написал). А активен у Вас становился лист, в котором Таблица2 и тогда количество строк совпадает и все нормально.

Автор - _Boroda_
Дата добавления - 03.09.2015 в 15:17
SLAVICK Дата: Четверг, 03.09.2015, 15:18 | Сообщение № 9
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
хм. у меня и с остановкой - выдает ошибку на Вашем коде
Может Вы выделяли столбцы целиком, а не отдельный диапазон? ^_^


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщениехм. у меня и с остановкой - выдает ошибку на Вашем коде
Может Вы выделяли столбцы целиком, а не отдельный диапазон? ^_^

Автор - SLAVICK
Дата добавления - 03.09.2015 в 15:18
Roman777 Дата: Четверг, 03.09.2015, 15:37 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
_Boroda_, точно!
SLAVICK, Да, я выделял столбцы... Но, мне казалось, что принципиальной разницы не должно быть столбцы или ограниченный диапазон...


Много чего не знаю!!!!
 
Ответить
Сообщение_Boroda_, точно!
SLAVICK, Да, я выделял столбцы... Но, мне казалось, что принципиальной разницы не должно быть столбцы или ограниченный диапазон...

Автор - Roman777
Дата добавления - 03.09.2015 в 15:37
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!