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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2011, 17:28   #1
Серёга0629
Форумчанин
 
Регистрация: 21.04.2011
Сообщений: 128
Восклицание Ошибки в Элементарном коде!

Доброе время суток! Такая проблема.
Есть файл в котором написан код(работа с другими файлами), всё работает, до определённого времени!
Код рабочий весь! Проблема в написании нового кода, код правильный, но в этой книге он выдаёт ошибку(пробовал в Лист1, там 2 маленьких проги, которые не работают), в других книгах он работает!
Одну проблему решил с написанием макроса(через запись макроса) - работает, но всё так же не решить...
Кода конечно многовато, может в этом Exel есть ограничение??? подскажите пожалуйста.
Имеется файл и ошибка:
Вложения
Тип файла: zip Ошибка.zip (346.8 Кб, 14 просмотров)
Серёга0629 вне форума Ответить с цитированием
Старый 22.08.2011, 18:08   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Вы покажите, на какой строке ошибка - в дебрях плутать охоты нет...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 22.08.2011, 18:14   #3
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
может в этом Exel есть ограничение???
да есть.На чёрную комнату в которой ничего нет.
Если искать максимум в пустых ячейках-ошибка.

Называть процедуру Clear -это плохой тон.Например M_Clear
Код:
ublic Sub bbb()
Dim wB As Workbook, Sh As Worksheet
Set wB = Workbooks("Свод за 12 месяцев.xls")
Set Sh = wB.Sheets("125в")
On Error Resume Next
wB.Sheets("Итоги").Range("C4") = Application.Max(Sh.Range("C3:C370"))
End Sub

Sub M_Clear    '    Clear()
    Sheets("125в").Rows("3:8000").Clear
    Sheets("130в").Rows("3:8000").Clear
    Sheets("131в").Rows("3:8000").Clear
    Sheets("132в").Rows("3:8000").Clear
End Sub
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 22.08.2011 в 18:17.
doober вне форума Ответить с цитированием
Старый 22.08.2011, 18:26   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Не понял, почему, но понял где
Так работает (оригинал давал ошибку):
Код:
Public Sub bbb()
  With Workbooks("СВОД за 12 месяцев.xls").Sheets("125в")
  .Select
  .Range("C3:C370").Select
  Selection.Find(Application.Max(Selection)).Copy
  End With
  Workbooks("СВОД за 12 месяцев.xls").Sheets("Итоги").Select
  Range("C4").PasteSpecial
End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 22.08.2011 в 18:31.
Hugo121 вне форума Ответить с цитированием
Старый 22.08.2011, 18:29   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

И можно подсократить:
Код:
Public Sub bbb2()
  With Workbooks("СВОД за 12 месяцев.xls").Sheets("125в")
  .Range("C3:C370").Find(Application.Max(.Range("C3:C370"))).Copy Workbooks("СВОД за 12 месяцев.xls").Sheets("Итоги").Range("C4")
  End With
End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 22.08.2011, 18:32   #6
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Я одного не могу понять у ТС ,получаем максимальное значение,потом его ищем в диапазоне,и копируем в ячейку
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 22.08.2011, 20:27   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Да, интересно.
А может ему нужно значение с форматированием?
Больше незачем

А вот почему не работает код в варианте ТС? Вроде всё правильно... хотя я в селектах не разбираюсь... и это ещё одна причина ими не пользоваться

Понял почему - из модуля листа такое не работает!
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 22.08.2011 в 20:34.
Hugo121 вне форума Ответить с цитированием
Старый 22.08.2011, 20:42   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

на лист "итоги" в статическую ячейку копируем максимум. Зачем там форматы и пр.. написано было с перепугу (точнее с макрорекордера)...
в любом случае - формат задать один раз руками и записать максимум, думаю, этого будет достаточно:
Код:
Public Sub bbb2()
  With Workbooks("СВОД за 12 месяцев.xls")
     .Sheets("Итоги").[C4] = Application.Max(.Sheets("125в").[C3:C370])
  End With
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 22.08.2011 в 20:45.
IgorGO вне форума Ответить с цитированием
Старый 22.08.2011, 21:14   #9
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

А вообще-то итог - это не всегда максимум по столбцу.
Правильнее тогда так:

Код:
Public Sub bbb()
    Dim wb As Workbook
    Set wb = Workbooks("СВОД за 12 месяцев.xls")
    wb.Sheets("Итоги").Range("C4") = wb.Sheets("125в").Range("A3:A370").Find("Итого:").Offset(, 2)
End Sub
Хотя в данном случае наверняка всегда максимум=итог, т.к. часы не будут иметь отрицательное значение...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.08.2011, 09:31   #10
Серёга0629
Форумчанин
 
Регистрация: 21.04.2011
Сообщений: 128
По умолчанию

Спасибо! не ожидал такого бурного обсуждения)
по поводу лишнего написаного кода, как тут написали "с перепугу ", я новичёк, поэтому получается допотопно)
так в чём всё-таки прикол: эта не работает:
Код:
Workbooks("СВОД за 12 месяцев.xls").Sheets("125в").Select
  Range("C3:C370").Select
  Selection.Find(Application.Max(Selection)).Copy
  Workbooks("СВОД за 12 месяцев.xls").Sheets("Итоги").Select
  Range("C4").PasteSpecial
а эта работает:
Код:
Public Sub bbb2()
  With Workbooks("СВОД за 12 месяцев.xls")
     .Sheets("Итоги").[C4] = Application.Max(.Sheets("125в").[C3:C370])
  End With
End Sub
а по поводу ограничения спросил, т.к. где-то когда-то читал о таком.
Спасибо большое, что откликнулись

Итог - это максимум, т.к. отрицательных значений нет, можно было найти последнюю ячейку, но через максимум проще

Последний раз редактировалось Серёга0629; 23.08.2011 в 09:46.
Серёга0629 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исправление ошибки 215 в коде Stefansson Помощь студентам 3 20.01.2011 23:13
Поиск в коде ошибки. Повторяется бесконечно! Человек_Борща Общие вопросы Delphi 9 16.01.2011 01:27
мелкие Ошибки в коде T@tali Паскаль, Turbo Pascal, PascalABC.NET 10 10.01.2011 21:55
Ошибки в коде для Builder C++ ололошенько C++ Builder 21 22.08.2010 15:26
ошибки в коде вычисления арифметических выражений на с++ Euforia_PZAS09_1 Помощь студентам 5 11.03.2010 20:42