powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Макрос не работает в excel 2007
25 сообщений из 60, страница 1 из 3
Макрос не работает в excel 2007
    #36622293
Alisya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такое действительно бывает что макрос напеисанный на excel 2003 не работает на 2007?
Причем три макроса работают а четвертый не хочет=(
Вот тот самый макрос:
Sub Sravnenie()
Dim object, times, i
Dim plan As Object, gos As Object, result As Object, x As Range
Dim FirstAddress$, blank_cell As Range
Dim discipl As Range
Worksheets("Ëèñò3").Cells.ClearContents
Set plan = Sheets(2)
Set gos = Sheets(1)
Set result = Sheets(3)

For i = 1 To plan.UsedRange.Rows.Count

object = Cells(i, 2)
times = plan.Cells(i, 8).Value

If object <> "" Then
If object Like "ÄÑ*" Or object Like "ÔÒÄ*" Then
Set DS_FTD = plan.Cells(i, 3)
Set x = gos.Columns(2).Find(DS_FTD, LookIn:=xlValues, lookat:=xlPart, MatchCase:=True)
Set object = plan.Columns(2).Find("Âñåãî ïî ÄÑ*")
i = object.Rows
Else
Set x = gos.Columns(2).Find(object, LookIn:=xlValues, lookat:=xlPart, MatchCase:=True)


If Not x Is Nothing Then

FirstAddress = x.Address

Do
Set x = gos.Columns(2).FindNext(x)
If gos.Cells(x.Row, 3).Value <> times Then
Set blank_cell = result.Cells(result.Range("a" & Rows.Count).End(xlUp).Row + 1, 1)
plan.Cells(, 2).Copy blank_cell
End If
Loop While Not x Is Nothing And x.Address <> FirstAddress
Else
Set blank_cell = result.Cells(result.Range("a" & Rows.Count).End(xlUp).Row + 1, 1)
plan.Cells(i, 2).Copy blank_cell
'blank_cell.Offset(0, 2).Value = "Not Exist In Sheets1 Column2!"
End If
End If
End If
Next

ActiveSheet.Columns.AutoFit
ActiveSheet.Rows.AutoFit

End Sub

Прикрепила файл в котором все макросы.
Помогите разобраться в чем проблема......
Заранее признательна.
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36622402
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alisya,

1) Используйте тэги для оформления кода. Ведь не в первый раз пишете!

2) Что значит "не хочет"? Выводит на экран сообщение "не хочу работать"? Ведь не в первый раз пишете!
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36622418
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подправь в коде
Код: plaintext
object = plan.Cells(i,  2 )
Либо сделай страницу "Лист2" активной и запускай.
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36622428
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно автормакрос напеисанный никогда не видел чтобы так писали... Извеняюсь за офтоп :)
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36622463
Alisya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaM, как остроумно =)
а за предыдуший ответ спасибо
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36622465
Alisya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, не ругайтесь...
Сейчас у меня ошибка на Next. Что делать?
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36622471
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlisyaShocker.Pro, не ругайтесь...
Сейчас у меня ошибка на Next. Что делать?

Как же не ругаться, если вы опять не указали текcт ошибки
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36622474
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlisyaСейчас у меня ошибка на Next. Что делать?
В каком макросе? У меня Sravnenie отрабатывает на ура...
Вообще в VBA есть возможность использовать трассировку...
Так же можно использовать возможноси предоставленные в пункте меню Debug
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36622482
Alisya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка в макросе Sravnenie: Run-time error '13'
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36622503
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlisyaОшибка в макросе Sravnenie: Run-time error '13'

Error 13 - несоответствие типов

Код: plaintext
1.
Set DS_FTD = plan.Cells(i,  3 )' ссылка на ДИАПАЗОН
Set x = gos.Columns( 2 ).Find(DS_FTD, LookIn:=xlValues, lookat:=xlPart, MatchCase:=True)' поиск ЗНАЧЕНИЯ, присвоенного переменной 'DS_FTD'
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36622522
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выложите свежую версию файла. Т.к. вы изменили данные на листе, то, скорее всего, одна из переменных получила некорректные данные скорее всего empty. И как я уже говорил выше писать так на VBA нельзя, т.к. в этом коде много вот таких милых мин замедленного действия.
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36622535
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlth
Код: plaintext
1.
Set DS_FTD = plan.Cells(i,  3 )' ссылка на ДИАПАЗОН
Set x = gos.Columns( 2 ).Find(DS_FTD, LookIn:=xlValues, lookat:=xlPart, MatchCase:=True)' поиск ЗНАЧЕНИЯ, присвоенного переменной 'DS_FTD'

ссылка на ячейку. В данном случае это указатель на объект Cells, не вводите в заблуждение...
Как переводятся слова Range и Cell можно посмотреть в словаре английского языка.
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36622538
Alisya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36622564
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно и кто придумал в цикле изменять переменную на ходу да ещё в неё попадает строка "Всего по ДС"?.. Интересно и скакой цельюэто делалось?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
For i =  1  To plan.UsedRange.Rows.Count

object = plan.Cells(i,  2 )
times = plan.Cells(i,  8 ).Value

    If object <> "" Then
        If object Like "ДС*" Or object Like "ФТД*" Then
                Set DS_FTD = plan.Cells(i,  3 )
                Set x = gos.Columns( 2 ).Find(DS_FTD, LookIn:=xlValues, lookat:=xlPart, MatchCase:=True)
                Set object = plan.Columns( 2 ).Find("Всего по ДС*")
                i = object.Rows
закоментируйте строку i = object.Rows, но по моему здесь вообще нужно код переписывать, т.к. получается непонятно что...
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36622598
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMvlth
Код: plaintext
1.
Set DS_FTD = plan.Cells(i,  3 )' ссылка на ДИАПАЗОН
Set x = gos.Columns( 2 ).Find(DS_FTD, LookIn:=xlValues, lookat:=xlPart, MatchCase:=True)' поиск ЗНАЧЕНИЯ, присвоенного переменной 'DS_FTD'

ссылка на ячейку. В данном случае это указатель на объект Cells, не вводите в заблуждение...
Как переводятся слова Range и Cell можно посмотреть в словаре английского языка.

Уважаемый SashaM, перевод значений Range и Cell в словаре английского языка, Вы, конечно, найдёте...
Вот только там не сказано, что в Excel нет объекта Cell, равно как и Cells
Есть объект Range.
В данном случае переменной DS_FTD (которая, кстати, по-моему, не объявлена) присваивается ссылка на диапазон, содержащий одну ячейку.

Аргументом поиска надо задавать не ссылку на диапазон, а значение, содержащееся в ячейке.
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36622613
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так и есть Cells - это массив ячеек и раземеется Cells(1,1) является частным случаем диапазона, но в коде конктерно это ссылка на ячейку и там всё верно!
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36622641
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2SashaM
Верно? Вы уверены? - у меня Excel 2003, поэтому я не скачиваю файл для проверки работы кода.
Но! Это несоответствие бросается в глаза. Почему бы, учитывая к тому же, сообщение VBA об ошибке №13, не переписать код корректно
Код: plaintext
1.
2.
Dim DS_FTD As ...
DS_FTD = plan.Cells(i,  3 )
Set x = gos.Columns( 2 ).Find(DS_FTD, LookIn:=xlValues, lookat:=xlPart, MatchCase:=True)
???
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36622704
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlthЭто несоответствие бросается в глаза.
Не увидел несоответствия, но в одном согласен типизация данных и хороший код всегда лучше, чем вот это...
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36622731
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMТак и есть Cells - это массив ячеек и раземеется Cells(1,1) является частным случаем диапазонаCells не является ни массивом ни "частным случаем диапазона", что бы это не значило. Cells — свойство, возвращающее объект Range.
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36622782
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Абстрагируйтесь от Object Browser, думаю офтоп закончен.
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36622794
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не увидел несоответствия...Тогда повторюсь: аргументом поиска должна быть не ссылка на диапазон, а какое-либо значение .
То, что "прокатывает" в 2003-м (который, видимо, в контексте поиска "берёт" для аргумента свойство диапазона Value как свойство по умолчанию), может не сработать в 2007-м.

Cells не является ни массивом ни "частным случаем диапазона", что бы это ни значило. Cells — свойство, возвращающее объект Range.
+1
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36623021
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMAntonariy,

Абстрагируйтесь от Object Browser, думаю офтоп закончен.Как раз он-то и является истиной в последней инстанции. Абстрагируйтесь от своих домыслов.
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36623036
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlthТо, что "прокатывает" в 2003-м (который, видимо, в контексте поиска "берёт" для аргумента свойство диапазона Value как свойство по умолчанию), может не сработать в 2007-м.
Да, да в M$ сидят идиоты, согласен с вами полностью...
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36623049
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMДа, да в M$ сидят идиоты, согласен с вами полностью...

Вы когда-нить пробовали запустить программу, написанную для Access 2.0 в любой следующей версии Access? Более-менее развитая прога работать не будет.
Так что не надейтесь на полную совместимость.
...
Рейтинг: 0 / 0
Макрос не работает в excel 2007
    #36623060
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Если вы говорите о VB версии 5? И о той объектной модели родом из 90-x то да, но всё развивается в том числе и язык
...
Рейтинг: 0 / 0
25 сообщений из 60, страница 1 из 3
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Макрос не работает в excel 2007
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]