Вопрос № 86267: Добрый день!
Хотелось узнать. можно ли с помощью VBA в Exel'e складывать ячейки например мне нужно чтобы высчитывался стаж от ТекущейДаты и от ДатыПриема на место работы. Так как я не являюсь специалистом в области програмирования на VBA я э...Вопрос № 86290: Сдрасти. У меня такой вот вопрос: создал я на vb dll-файл с функциями чтобы использовать их как апи, но при попытке обратиться к какой-нибудь из них вылетает ошибка, что невозможно найти какую-то точку входа. Что мне делать???...Вопрос № 86322: Здратсвуйте! Мне нужно перезватить событие из WebBrowser.
Например если в элементе WebBrowser нажали на сылку которая откроеться в новом окне то нужно произвести действие...
Если такая возможжность есть помогите.......Вопрос № 86342: Здравствуйте, помогите пожалуйста найти ответ на один очень важный вопрос. Почему данный макрос: Range("F75:F83").Select > Range("F75:F83").Formula = Range("F75:F83").Value не работает с такой яч...
Вопрос № 86.267
Добрый день!
Хотелось узнать. можно ли с помощью VBA в Exel'e складывать ячейки например мне нужно чтобы высчитывался стаж от ТекущейДаты и от ДатыПриема на место работы. Так как я не являюсь специалистом в области програмирования на VBA я это никак не могу сделать.
Например ячейку А1 - ячейку В1 допкстим а Вывод выводился в ячейку С1???
Заранее очень благодарин!
Отправлен: 10.05.2007, 14:49
Вопрос задал: Luck_brt (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, Luck_brt!
Если в ячейке A1 разместить дату например 11.05.1984, а в ячейке B1 разместить дату 10.05.2007 то формула "=ГОД(B1-A1)-1900" выдаст Вам 23.
Это и есть колличество полных лет между датами.
В Excel существует функция "=СЕГОДНЯ()" - выводящая текущую дату, и много других функций, изучив которые Вам вполне можно будет обойтись без знания VBA.
Евгений.
Ответ отправил: Тесленко Евгений Алексеевич (статус: 7-ой класс)
Ответ отправлен: 10.05.2007, 16:30 Оценка за ответ: 5 Комментарий оценки: Большое спасибо!!! Очень доступно и очень полный ответ!!!
Отвечает: Филатов Евгений Геннадьевич
Здравствуйте, Luck_brt!
В дополнение к мини-форуму. Сделал макрос для расчета стажа ( в приложении ) .
В ячейках A2:A7 находятся даты приема на работу, в ячейках B2:B7 даты увольнения ( если не уволен, то можно вбить формулу " =СЕГОДНЯ ( ) " ) .
Выделяется диапазон C2:C7 и запускается макрос. В итоге в столбце C количество лет, в столбце D количество месяцев, а в столбце E количество дней стажа.
Если есть вопросы, то могу прислать образец Excel.
Пишите на адрес jones@rusfaq.ru или jones@hte.vl.net.ua.
С уважением.
Приложение:
Ответ отправил: Филатов Евгений Геннадьевич (статус: 7-ой класс)
Ответ отправлен: 11.05.2007, 17:31 Оценка за ответ: 5 Комментарий оценки: Отличный ответ! Вот так бы всегда отвечали...!!! Огромное спасибо!!!
Вопрос № 86.290
Сдрасти. У меня такой вот вопрос: создал я на vb dll-файл с функциями чтобы использовать их как апи, но при попытке обратиться к какой-нибудь из них вылетает ошибка, что невозможно найти какую-то точку входа. Что мне делать???
Отправлен: 10.05.2007, 16:40
Вопрос задал: Kostyan (статус: 2-ой класс)
Всего ответов: 5 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: PsySex
Здравствуйте, Kostyan!
Прочитайте статью, не все DLL одинакого полезны;-)
http://www.codenet.ru/progr/vbasic/Create-DLL/
Есть язык PowerBasic - в нем можно писать полноценные DLL-ки, синтаксис с VB схож.
http://powerbasic.narod.ru/
--------- Bom Shankar!
Ответ отправил: PsySex (статус: Практикант)
Ответ отправлен: 10.05.2007, 16:59 Оценка за ответ: 4
Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, Kostyan!
Вам лично я бы посоветовал заняться изучением русского языка.
А с Вашей "библиотекой" надо разбираться выяснив источник ошибки, пошаговым выполнением кода.
Евгений.
Отвечает: AlbusFalco
Здравствуйте, Kostyan!
Vb создает ActiveX DLL. А их нужно регистрировать. Например с помощью regsvr32.
Ответ отправил: AlbusFalco (статус: 1-ый класс)
Ответ отправлен: 10.05.2007, 18:44 Оценка за ответ: 4
Отвечает: Jan
Здравствуйте, Kostyan!
Вообще компилятор VB автоматически регистрирует DLL по крайней мере это не проблема, тем более, что ваша программа не может найти точки входа, попросту её там нет и быть не может, поскольку это действительно ActiveX DLL и доступа к отдельным функциям как API не предлагает, для работы с такими DLL прочитайте статью: http://www.codenet.ru/progr/vbasic/Create-DLL/
Ответ отправил: Jan (статус: 1-ый класс)
Ответ отправлен: 10.05.2007, 19:57 Оценка за ответ: 5
Отвечает: Залетин Виталий Викторович (мь!тарь)
Здравствуйте, Kostyan!
Вся соль во фразе "чтобы использовать их как апи". VB не позволяет этого делать. VB делает только ActiveX DLL (или Библиотеки классов). Чтобы пользоваться своей написанной DLL надо ее в проект подключить через Project->References либо использовать позднее связывание:
Dim o As Object
Set o=CreateObject("Dll_Project_Name.Dll_Class_Name")
Хотя некоторые служебные функции ActiveX DLL таки экспортируют как АПИ (например, DllRegisterServer).
Если большая охота делать именно АПИшные DLL, то используйте либо Ассемблер, либо VC++, либо, если охота бейсиковского синтаксиса и большинства команд, используйте FreeBASIC, либо РowerBasic.
--------- Учиться никогда не поздно. Особенно программированию!
Здратсвуйте! Мне нужно перезватить событие из WebBrowser.
Например если в элементе WebBrowser нажали на сылку которая откроеться в новом окне то нужно произвести действие...
Если такая возможжность есть помогите....
Отправлен: 10.05.2007, 20:41
Вопрос задал: DarkHacker (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: PsySex
Здравствуйте, DarkHacker!
Да есть, событие это:
Private Sub WebBrowser1_NewWindow2(ppDisp As Object, Cancel As Boolean)
...
End Sub
--------- Bom Shankar!
Ответ отправил: PsySex (статус: Практикант)
Ответ отправлен: 10.05.2007, 22:07
Отвечает: Залетин Виталий Викторович (мь!тарь)
Здравствуйте, DarkHacker!
Почитайте вот это:
http://hiprog.com/index.php?option=com_content&task=view&id=323&Itemid=38
http://hiprog.com/index.php?option=com_content&task=view&id=424&Itemid=38
--------- Учиться никогда не поздно. Особенно программированию!
Здравствуйте, помогите пожалуйста найти ответ на один очень важный вопрос. Почему данный макрос: Range("F75:F83").Select > Range("F75:F83").Formula = Range("F75:F83").Value
не работает с такой ячейкой (формулой), как =СЦЕПИТЬ("=ВПР($E$67;'";$B$69;D130;")") т.е. в ней не реализуется последовательность F2-Enter, выдается ошибка, а вот с такой формулой как, =СЦЕПИТЬ("='";$B$68;$B$67;$F$68;D118), всё отлично получается, т.е. в ней
нет функции ВПР. Подскажите пожалуйста, как можно сделать данный макрос универсальным, что бы он работал со всеми значениями. Спасибо Большое. Элли.
Данный макрос представлен на RUSFAQ.ru по следующей ссылке (автор макроса Alec Perle). [Edited by Gh0stik]
Отвечает: Залетин Виталий Викторович (мь!тарь)
Здравствуйте, Элли Александровна Татошкина!
===================================
ВПР - Ищет значение в крайнем левом столбце таблицы и возвращает значение (а не значениЯ) в той же строке из указанного столбца таблицы. Функция ВПР используется вместо функции ГПР, когда сравниваемые значения расположены в столбце слева от искомых данных.
===================================
Скорее всего, если опираться на ту формулу, что Вы написали в вопросе, в ячейке выводится что-то типа " =ВПР($E$67;') ". Тут проблема с кавычками - нужны двойные, а у Вас стоят одна одинарная и одна двойная. Да и сцепляется одна строка ни с чем. Да и второй параметр ВПР пустой.
Отвечает: Alec Perle
Здравствуйте, Элли Александровна Татошкина!
Во-первых, данный макрос был представлен для того, чтобы функции, записанные в ячейках, отформатированных как текст, были восприняты как функции;
во-вторых макрос, в контексте своего применения, является универсальным, т.к. в нем значения ячеек диапазона переносятся в формулы, что в свою очередь приводит к проверке формул на правильность, поэтому, если имеется ошибка, то об этом будет сообщено.
Ну и в-третьих, не вдаваясь в подробности неоходимости использования именно этого подхода в Вашем случае, имеет место ошибка именно в создании (с помощью функции СЦЕПИТЬ) функции ВПР (как указано экспертом Залетиным Виталием Викторовичем).
Поэтому, перед тем, как использовать макрос (который, кстати, приведет к потере записи функции СЦЕПИТЬ и заменит фомулу результатом ее вычисления) проверьте значение ячейки, в которой функция ВПР должна быть записана правильно.
К сожалению, не зная, что Вы предполагаете хранить в ячейках E67, B69, D130, трудно точно указать на Ваши ошибки в написании формулы.
--------- Пессимист - это хорошо информированный оптимист (а оптимист - хорошо проинструктированный пессимист)
Ответ отправил: Alec Perle (статус: 7-ой класс)
Ответ отправлен: 13.05.2007, 01:55