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

Вход

Регистрация

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

 

= Мир MS Excel/Отладка пользовательской функци - Страница 2 - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 2 из 3«123»
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Отладка пользовательской функци (Функции/Function)
Отладка пользовательской функци
KuklP Дата: Пятница, 25.03.2016, 21:29 | Сообщение № 21
Группа: Проверенные
Ранг: Старожил
Сообщений: 2006
Репутация: 436 ±
Замечаний: 20% ±

Не любую, а все три. Но я пойду пожалуй. Тут без меня толпа помощников :)


Ну, с НДС и мы чего-то стoим! kuklp@mail.ru
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеНе любую, а все три. Но я пойду пожалуй. Тут без меня толпа помощников :)

Автор - KuklP
Дата добавления - 25.03.2016 в 21:29
Bamboo Дата: Пятница, 25.03.2016, 21:33 | Сообщение № 22
Группа: Пользователи
Ранг: Участник
Сообщений: 56
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
KuklP, не пойму как не могли бы написать в моем коде?
 
Ответить
СообщениеKuklP, не пойму как не могли бы написать в моем коде?

Автор - Bamboo
Дата добавления - 25.03.2016 в 21:33
Bamboo Дата: Пятница, 25.03.2016, 21:34 | Сообщение № 23
Группа: Пользователи
Ранг: Участник
Сообщений: 56
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
StoTisteg, я его просто при копировании удалил случайно...
 
Ответить
СообщениеStoTisteg, я его просто при копировании удалил случайно...

Автор - Bamboo
Дата добавления - 25.03.2016 в 21:34
Hugo Дата: Пятница, 25.03.2016, 21:34 | Сообщение № 24
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2653
Репутация: 597 ±
Замечаний: 0% ±

в макросе вместо листа поставить любую из переменных функции?

Вы зачем вообще функцию писали и отлаживаете? Наверное она должна что-то с чем-то делать, так ведь?
P.S. А про If я тоже выше уже сказал, и где оно было - известно только Вам...


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069


Сообщение отредактировал Hugo - Пятница, 25.03.2016, 21:36
 
Ответить
Сообщение
в макросе вместо листа поставить любую из переменных функции?

Вы зачем вообще функцию писали и отлаживаете? Наверное она должна что-то с чем-то делать, так ведь?
P.S. А про If я тоже выше уже сказал, и где оно было - известно только Вам...

Автор - Hugo
Дата добавления - 25.03.2016 в 21:34
Bamboo Дата: Пятница, 25.03.2016, 21:38 | Сообщение № 25
Группа: Пользователи
Ранг: Участник
Сообщений: 56
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Hugo, Абсолютно верно, промежуточный результат получился. Начал писать дальше и затык... А как отладку запустить не пойму. Этот код с листом мне здесь дали для запуска отладки функции, я не понимаю как он работает, поэтому не могу разобраться что сделал неправильно. Причем тут три входных переменных функции тем более не пойму.
End IF стоит перед End sub и дает правильный результат.


Сообщение отредактировал Bamboo - Пятница, 25.03.2016, 21:42
 
Ответить
СообщениеHugo, Абсолютно верно, промежуточный результат получился. Начал писать дальше и затык... А как отладку запустить не пойму. Этот код с листом мне здесь дали для запуска отладки функции, я не понимаю как он работает, поэтому не могу разобраться что сделал неправильно. Причем тут три входных переменных функции тем более не пойму.
End IF стоит перед End sub и дает правильный результат.

Автор - Bamboo
Дата добавления - 25.03.2016 в 21:38
Hugo Дата: Пятница, 25.03.2016, 21:52 | Сообщение № 26
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2653
Репутация: 597 ±
Замечаний: 0% ±

Причем тут три входных переменных функции

При том что для работы функции их нужно дать. Хотя два последних конечно совершенно бесполезны, но они ведь там указаны...
Т.е. оптимальнее сделать так:
[vba]
Код
Function HighLevACC(ACC)
    If ACC = "Empty" Then HighLevACC = ACC.Offset(0, -1)
End Function

Public Sub www()
    MsgBox Application.Run("HighLevACC", [c1])
End Sub
[/vba]


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069


Сообщение отредактировал Hugo - Пятница, 25.03.2016, 21:57
 
Ответить
Сообщение
Причем тут три входных переменных функции

При том что для работы функции их нужно дать. Хотя два последних конечно совершенно бесполезны, но они ведь там указаны...
Т.е. оптимальнее сделать так:
[vba]
Код
Function HighLevACC(ACC)
    If ACC = "Empty" Then HighLevACC = ACC.Offset(0, -1)
End Function

Public Sub www()
    MsgBox Application.Run("HighLevACC", [c1])
End Sub
[/vba]

Автор - Hugo
Дата добавления - 25.03.2016 в 21:52
Bamboo Дата: Пятница, 25.03.2016, 22:15 | Сообщение № 27
Группа: Пользователи
Ранг: Участник
Сообщений: 56
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Hugo, Спасибо. Две остальных переменных я потом задействую.

С этим макросом выдал ту же ошибку: 449

А что значит [c1] ?
 
Ответить
СообщениеHugo, Спасибо. Две остальных переменных я потом задействую.

С этим макросом выдал ту же ошибку: 449

А что значит [c1] ?

Автор - Bamboo
Дата добавления - 25.03.2016 в 22:15
StoTisteg Дата: Пятница, 25.03.2016, 22:23 | Сообщение № 28
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
А что значит [c1] ?

Cells(1,3).Value
[p.s.]Не люблю стиль A1. Буквы очень трудно вычислять ;)


Проверь всё. ThisWorkbook.Save. On Error Resume Next.

Сообщение отредактировал StoTisteg - Пятница, 25.03.2016, 22:27
 
Ответить
Сообщение
А что значит [c1] ?

Cells(1,3).Value
[p.s.]Не люблю стиль A1. Буквы очень трудно вычислять ;)

Автор - StoTisteg
Дата добавления - 25.03.2016 в 22:23
Hugo Дата: Пятница, 25.03.2016, 23:17 | Сообщение № 29
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2653
Репутация: 597 ±
Замечаний: 0% ±

Cells(1,3).Value

Нет, не .Value - там ведь по коду требуется ячейка, а не значение.


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069
 
Ответить
Сообщение
Cells(1,3).Value

Нет, не .Value - там ведь по коду требуется ячейка, а не значение.

Автор - Hugo
Дата добавления - 25.03.2016 в 23:17
Bamboo Дата: Пятница, 25.03.2016, 23:28 | Сообщение № 30
Группа: Пользователи
Ранг: Участник
Сообщений: 56
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Hugo, Причем тут ссылка на ячейки?
Скажите как отладку функции запустить? У меня уже пара десятков строк кода, но как посмотреть работу я не знаю....
 
Ответить
СообщениеHugo, Причем тут ссылка на ячейки?
Скажите как отладку функции запустить? У меня уже пара десятков строк кода, но как посмотреть работу я не знаю....

Автор - Bamboo
Дата добавления - 25.03.2016 в 23:28
StoTisteg Дата: Пятница, 25.03.2016, 23:36 | Сообщение № 31
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Нет, не .Value - там ведь по коду требуется ячейка, а не значение.

Для одной ячейки VBA глубоко пофиг.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение
Нет, не .Value - там ведь по коду требуется ячейка, а не значение.

Для одной ячейки VBA глубоко пофиг.

Автор - StoTisteg
Дата добавления - 25.03.2016 в 23:36
KuklP Дата: Пятница, 25.03.2016, 23:36 | Сообщение № 32
Группа: Проверенные
Ранг: Старожил
Сообщений: 2006
Репутация: 436 ±
Замечаний: 20% ±

Bamboo, это я Вам показал в первом же ответе. Если Вы не поняли, значит Вам надо начать с чего-нить попроще. С азов программирования. Узнать что такое в принципе UDF, как пишутся и как работвают. Может стоит посетить какие нибудь курсы "для чайников". Ребят, Bamboo прав, обсуждение никак не касается топика, может пора закругляться?


Ну, с НДС и мы чего-то стoим! kuklp@mail.ru
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеBamboo, это я Вам показал в первом же ответе. Если Вы не поняли, значит Вам надо начать с чего-нить попроще. С азов программирования. Узнать что такое в принципе UDF, как пишутся и как работвают. Может стоит посетить какие нибудь курсы "для чайников". Ребят, Bamboo прав, обсуждение никак не касается топика, может пора закругляться?

Автор - KuklP
Дата добавления - 25.03.2016 в 23:36
Hugo Дата: Пятница, 25.03.2016, 23:38 | Сообщение № 33
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2653
Репутация: 597 ±
Замечаний: 0% ±

Для одной ячейки VBA глубоко пофиг.

ну сделайте offset значению ячейки...
Причем тут ссылка на ячейки?
- это мне неведомо, не я эту функцию писал :)


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069
 
Ответить
Сообщение
Для одной ячейки VBA глубоко пофиг.

ну сделайте offset значению ячейки...
Причем тут ссылка на ячейки?
- это мне неведомо, не я эту функцию писал :)

Автор - Hugo
Дата добавления - 25.03.2016 в 23:38
StoTisteg Дата: Пятница, 25.03.2016, 23:47 | Сообщение № 34
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Скажите как отладку функции запустить?

1) Пишете макрос
[vba]
Код

Sub test()

    Dim i

    i=<Функция>

End Sub
[/vba]
2) Помещаете экранный (не мышиный!) курсор в строку i=<Функция>
3) Нажимаете F9, при этом строка должна стать коричневой
4) Запускаете макрос
5) После останова макроса долбитесь в F8 до желаемого результата. У меня это обычно "А, блин, мой драный склероз!"
...
PROFIT!


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение
Скажите как отладку функции запустить?

1) Пишете макрос
[vba]
Код

Sub test()

    Dim i

    i=<Функция>

End Sub
[/vba]
2) Помещаете экранный (не мышиный!) курсор в строку i=<Функция>
3) Нажимаете F9, при этом строка должна стать коричневой
4) Запускаете макрос
5) После останова макроса долбитесь в F8 до желаемого результата. У меня это обычно "А, блин, мой драный склероз!"
...
PROFIT!

Автор - StoTisteg
Дата добавления - 25.03.2016 в 23:47
StoTisteg Дата: Пятница, 25.03.2016, 23:48 | Сообщение № 35
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
это мне неведомо, не я эту функцию писал

Ви так говорите, будто её таки писал я :p


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение
это мне неведомо, не я эту функцию писал

Ви так говорите, будто её таки писал я :p

Автор - StoTisteg
Дата добавления - 25.03.2016 в 23:48
Hugo Дата: Пятница, 25.03.2016, 23:53 | Сообщение № 36
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2653
Репутация: 597 ±
Замечаний: 0% ±

Ви так говорите, будто её таки писал я

И что заставляет так думать?
Тот кто писал - тот надёюсь прочитал :)


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069
 
Ответить
Сообщение
Ви так говорите, будто её таки писал я

И что заставляет так думать?
Тот кто писал - тот надёюсь прочитал :)

Автор - Hugo
Дата добавления - 25.03.2016 в 23:53
StoTisteg Дата: Пятница, 25.03.2016, 23:55 | Сообщение № 37
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
ну сделайте offset значению ячейки...

Я для начала не буду делать ячейке Set. Ибо для избегания громоздких констхрюкций я юзаю With.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение
ну сделайте offset значению ячейки...

Я для начала не буду делать ячейке Set. Ибо для избегания громоздких констхрюкций я юзаю With.

Автор - StoTisteg
Дата добавления - 25.03.2016 в 23:55
Hugo Дата: Суббота, 26.03.2016, 00:01 | Сообщение № 38
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2653
Репутация: 597 ±
Замечаний: 0% ±

StoTisteg, Вы код функции читали? Поняли?


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069
 
Ответить
СообщениеStoTisteg, Вы код функции читали? Поняли?

Автор - Hugo
Дата добавления - 26.03.2016 в 00:01
StoTisteg Дата: Суббота, 26.03.2016, 00:10 | Сообщение № 39
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Читал. Но так и не понял, какая религия мешает передавать отдельно .Row и .Column... Тем более что судя по
[vba]
Код
HighLevACC = ACC.Offset(0, -1)
[/vba]
в вызывающем макросе меняется только .Row, а задача тривиальна — получить значение соседней слева ячейки.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.

Сообщение отредактировал StoTisteg - Суббота, 26.03.2016, 00:16
 
Ответить
СообщениеЧитал. Но так и не понял, какая религия мешает передавать отдельно .Row и .Column... Тем более что судя по
[vba]
Код
HighLevACC = ACC.Offset(0, -1)
[/vba]
в вызывающем макросе меняется только .Row, а задача тривиальна — получить значение соседней слева ячейки.

Автор - StoTisteg
Дата добавления - 26.03.2016 в 00:10
KuklP Дата: Суббота, 26.03.2016, 00:24 | Сообщение № 40
Группа: Проверенные
Ранг: Старожил
Сообщений: 2006
Репутация: 436 ±
Замечаний: 20% ±

"Вы, Шариков, чепуху говорите и возмутительнее всего то, что говорите ее безапелляционно и уверенно...
вы в присутствии двух людей с университетским образованием позволяете себе с развязностью совершенно невыносимой подавать какие-то советы космического масштаба и космической же глупости о том, как все поделить… […] …вам нужно молчать и слушать, что вам говорят." Собачье сердце, Михаил Афанасьевич Булгаков(с)
Я ни на кого не намекаю <_<


Ну, с НДС и мы чего-то стoим! kuklp@mail.ru
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщение"Вы, Шариков, чепуху говорите и возмутительнее всего то, что говорите ее безапелляционно и уверенно...
вы в присутствии двух людей с университетским образованием позволяете себе с развязностью совершенно невыносимой подавать какие-то советы космического масштаба и космической же глупости о том, как все поделить… […] …вам нужно молчать и слушать, что вам говорят." Собачье сердце, Михаил Афанасьевич Булгаков(с)
Я ни на кого не намекаю <_<

Автор - KuklP
Дата добавления - 26.03.2016 в 00:24
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Отладка пользовательской функци (Функции/Function)
Страница 2 из 3«123»
Поиск:

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