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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.09.2010, 13:45   #1
jerko
Пользователь
 
Регистрация: 19.01.2009
Сообщений: 14
Вопрос Совместимость Екселя 2003 и 2007

Здраствуйте, коллеги. У меня возникла следующая проблема: запускаю код в 07 екселе и он нормально работает. Суть кода такова: некоторые значения из текущего листа при создании нового переносяться на него в нужные мне ячейки. Открываю етот файл в 03 екселе, и код неработает. Подскажите что делать. Заранее спасибо.
jerko вне форума Ответить с цитированием
Старый 08.09.2010, 13:52   #2
alebed
Пользователь
 
Аватар для alebed
 
Регистрация: 26.05.2010
Сообщений: 77
По умолчанию

Открывать в 2007
А если серьезно, предоставьте файл или код
Спасибо и Пасибы принимаются на WebMoney в американских Z143254902288 или русских R388611339241 монетах
alebed вне форума Ответить с цитированием
Старый 08.09.2010, 14:59   #3
jerko
Пользователь
 
Регистрация: 19.01.2009
Сообщений: 14
По умолчанию

Цитата:
Открывать в 2007
Вспомнилась шутка: не говорите что мне делать и я не скажу куда вам идти
А если серьозно, то я скинул файл екселя. Дело в том что им будут пользоваться и другие люди, у которых стоит ех03
Вложения
Тип файла: rar Книга1.rar (9.7 Кб, 21 просмотров)
jerko вне форума Ответить с цитированием
Старый 08.09.2010, 15:19   #4
alebed
Пользователь
 
Аватар для alebed
 
Регистрация: 26.05.2010
Сообщений: 77
По умолчанию

строку
Range("M3:M" & lr).SpecialCells(xlCellTypeBlanks). FormulaR1C1 = "=RC[-10]+RC[-7]+RC[-3]"

замените на
Range("M3:M" & Trim(Str(lr))).FormulaR1C1 = "=RC[-10]+RC[-7]+RC[-3]"
Спасибо и Пасибы принимаются на WebMoney в американских Z143254902288 или русских R388611339241 монетах
alebed вне форума Ответить с цитированием
Старый 08.09.2010, 15:46   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от jerko Посмотреть сообщение
Дело в том что им будут пользоваться и другие люди, у которых стоит ех03
Он и не должен был работать
Конечно,если складывать номер автомобиля с суммой,то информация очень секретная
Код:
Private Sub Workbook_NewSheet(ByVal Sh As Object)
   Dim lc As Integer
   Dim lr As Long

   With Sheets(Sheets.Count - 1)
      lc = .Range("A1").End(xlToRight).Column 
      Range(.Cells(1, 1), .Cells(2, lc)).Copy Range("A1") 
      Range(.Cells(1, 1), .Cells(2, lc)).Copy Range("A37")  

      lr = .Range("A" & Cells.Rows.Count).End(xlUp).Row 
      .Range("A3:B" & lr).Copy Range("A3")  

      .Range("L3:L" & lr).Copy
      Range("C3").PasteSpecial Paste:=xlPasteValues
      Range("C3").PasteSpecial Paste:=xlPasteFormats
   End With
On Error Resume Next
  Range("L3:L" & lr).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=RC[-10]+RC[-7]+RC[-3]"
   Cells.EntireColumn.AutoFit
   Range("A1").Select
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 09.09.2010, 06:21   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Ваша проблема более глобальна.
Дело в том, что в Excel 2007 в панели ярлычков листов есть отдельная кнопка "Вставить лист". Ваш макрос будет правильно работать только в том случае, если пользоваться именно таким способом добавления нового листа, т.к. в этом случае новый лист добавляется последним, не зависимо от того, какой лист активен. И метод With Sheets(Sheets.Count - 1) будет указывать на предпоследний лист (перед вставленным новым), что Вам, по всей видимости, и требуется. В Excel 2003 такой кнопки нет. Для того, чтобы вставить новый лист приходится пользоваться контекстным меню листа. В этом случае, новый лист будет вставлен перед активным листом и Ваш макрос "запутается". Кстати сказать, что в 2007 никто не отменял такой способ добавления нового листа. Если пользоваться таким способом, то Ваш макрос будет работать неправильно, не зависимо от версии Excel.
Для того, чтобы макрос работал корректно, нужно первой строкой кода переместить созданный лист в конец списка листов книги. Т.е. так:
Цитата:
Sh.Move after:=Sheets(Sheets.Count)
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 09.09.2010 в 06:25.
SAS888 вне форума Ответить с цитированием
Старый 15.09.2010, 15:47   #7
jerko
Пользователь
 
Регистрация: 19.01.2009
Сообщений: 14
По умолчанию

Цитата:
Конечно,если складывать номер автомобиля с суммой,то информация очень секретная
Сказал и не подумал
Цитата:
Ваша проблема более глобальна.
SAS, я сделал так как Вы сказали, но это не помогло
Цитата:
замените на
Range("M3:M" & Trim(Str(lr))).FormulaR1C1 = "=RC[-10]+RC[-7]+RC[-3]"
Этот совет тоже почему то не помог.
Отправил файл с исправлениями. Может Вы еще раз посмотрите на него
Вложения
Тип файла: rar Книга3.rar (9.7 Кб, 11 просмотров)
jerko вне форума Ответить с цитированием
Старый 16.09.2010, 06:39   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
SAS, я сделал так как Вы сказали, но это не помогло
Вы сделали не так как я сказал.
В коде макроса, строку
Код:
Sh.Move after:=Sheets(Sheets.Count)
переместите в самое начало. Можно даже до строк, определяющих типы используемых переменных. И будет счастье.
Вы сначала делаете обращение к "неправильному" листу методом With, а затем перемещаете созданный новый лист в конец списка. А нужно наоборот.
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 16.09.2010 в 06:41.
SAS888 вне форума Ответить с цитированием
Старый 17.09.2010, 13:48   #9
jerko
Пользователь
 
Регистрация: 19.01.2009
Сообщений: 14
По умолчанию

SAS, Вы дали отличный совет. Все заработало. Не знаю, стоит ли начинать новую тему, но у меня есть еще один вопрос по етому файлу: возможно ли дописать код, который бы подсчитывал значение сумы, то есть, например значения Е5, G5, I5 и так далее и выводил ихнюю сумму, например, в 28 листе в ячейку L5?
jerko вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конвертировать формулы из [2007 Word 2007] в [2003 Word 2003] mswmd Microsoft Office Word 8 10.07.2017 17:06
Совместимость Excel 2003 и 2007 1134 Microsoft Office Excel 9 19.07.2010 14:08
Совместимость 2003 и 2007 chandrasecar Microsoft Office Excel 1 12.07.2010 23:01
workbooks.add - совместимость с 2007 alex_r Microsoft Office Excel 15 29.01.2010 15:08
Совместимость макросов из exel 2003 с 2007 palleot Microsoft Office Excel 1 30.06.2009 15:38