Вопросы

Евгений Ушаков
О стоимости курса

Добрый день! Поясните, пожалуйста, 3000 р. стоит документ об окончании курса. Если он не нужен, то можно учиться бесплатно?

Александр Новиков
Справочник по объектам VBA

Добрый день! Очень нужен справочник по объектам VBA c описание их методов и свойств.

Кто-нибудь знает, где можно приобрести?

(Он конечно есть в VBA - Object browser, но не очень удобный)

Егор Кошев
Егор Кошев 10 января 2018 в 09:09

Попробуйте скачать Excel 2013 Developer Documentation с расширением .chm отсюда: https://www.microsoft.com/en-us/download/details.aspx?id=40326

Лариса Тесленко
Продолжительность контекстной подсказки

Как увеличить время присутствия контекстной подсказки при наборе кода? Она очень быстро исчезает. Не успеваешь ей воспользоваться.

Никита Грищенко
В главе 7.12. Сравнение с использованием Like и Is найдены ошибки.

1) В  В листинге 7.19. для решения подзадачи

"Узнать, есть ли в строке прописные и заглавные буквы латинского алфавита."

написан корректный алгоритм:

 'Есть ли латинские буквы в строке If str_Inp Like "*[a-z]*" Or _ str_Inp Like "*[A-Z]*" _ Then MsgBox ("В строке есть латинские буквы")

при этом в примере 07-10-Сравнение строк с шаблонами.docm - допущена ошибка - в строке

If str_Inp Like "[a-z]" Or _ str_Inp Like "[A-Z]" отсутствуют звездочки, поэтому для строк, содержащих больше одного знака, некорректно будет определяться наличие латинских букв.

2) Более серьезная ошибка допущена и в формулировке подзадания и в листинге: Проверить, нет ли во введенной строке русских букв " а " и " о ".

Предлагается алгоритм: If str_Inp Like "[!а]" And str_Inp Like "[!о]" Then ... вывести, что нет букв "а" и "о".

 Поэтому, при выборе оператора And имелось желание сделать проверку, если нет ни буквы "а", ни буквы "о" одновременно. Но указанный алгоритм неработоспособен, так как строка сравнивается с шаблоном, состоящим и одной буквы, и это не "а". Если же строка содержит более одной буквы, например "вв", то сравнение в обоих случаях даст ложь, при этом указанный шаблон не содержит ни "а", ни "о".

Корректным же алгоритмом будет обратный:

If Not(str_Inp Like "[а]" And str_Inp Like "[о]") Then ... вывести, что нет букв "а" и "о".

найдем букву "а" - правда, найдем букву "о" - правда. Если обе части правдивы, то и выражение правдиво, то есть оно содержит одновременно и "а" и "о". В таком случае выводить сообщение не нужно, т.е. инвертировать правду в ложь в условном операторе.

Если же в выражении будет только буква "а", то выражение будет лживым, инвертированное - правдивым и сообщение об отсутствии букв "а" и "о" также выведется, несмотря на наличие буквы "а" в испытуемом выражении. Соответственно, чтобы сделать его логичным, надо либо добавить слово "одновременно":

("В строке нет букв " + Chr(34) + _ "а" + Chr(34) + " и " + Chr(34) + "о" + Chr(34)+"одновременно").

Либо, вторым вариантом корректировки является использование оператора Or, а не And.

If Not(str_Inp Like "[а]" Or str_Inp Like "[о]") Then ... вывести, что нет букв "а" и "о".

Тогда сообщение будет выводиться, только когда в испытуемой строке не будет ни буквы "а", ни буквы "о", если же будет либо "а", либо "о", то сообщение также не будет выводиться, что будет логичным.

 

Сергей Щербаков
Не могу открыть пример

Здравствуйте, записался на курс VBA MS Office 2007. Скачал пример к п. 1.2. 01-01-Автоматическое форматирование.docm При открытии появляется пустое окно Word без какого-либо текста. Никаких ошибок не выдает. Помогите решить проблему, спасибо.

Светлана Передельская
Как связать данные нескольких форм?

Например, создавая тестовые задания, каждый вопрос с вариантами ответов заданы в отдельной форме. Каким образом посчитать количество верных ответов? 

Сергей Зорин
Сергей Зорин 23 мая 2015 в 21:52

Можно счетчикик верных ответов хранить в глобальной переменной. По результатам ответа на каждой форме соответственно увеличивать или не увеличивать этот счетчик

Алексей Антохин
Есть ли объект Calendar в ms word 2013?

Пример из параграфа 4.17. Calendar в ms word 2013. Попытался найти замену не найденному объекту Календарь.... Не обнаружил. Подскажите есть ил альтернатива в этой версии ms office?

ГЕННАДИЙ ГРИБ
ГЕННАДИЙ ГРИБ 15 февраля 2016 в 22:26

Необходимо отметить, что факт отсутствия удобного календарика в MS Office 2010+ весьма удручает. Искал достойную альтернативу данному элементу управления. Пробовал регистрировать небезызвестный MSCAL.OCX от MS Office 2007.Который, кстати, прекрасно регистрировался в системе, но, в итоге, даже после выбора месторасположения файла посредством Tools>References в редакторе VBA при попытке подключения с последующим его отображением в Toolbox, всё было тщетно. Также пробовал использовать MS DatePicker, тоже, извините за мой французский, как-то не прокатило. Пробовал заменители сторонних разработчиков, но были или убогое оформление, либо не работали в 64-разрядной среде. А я, к сожалению, пока не специалист в VBA, чтобы переработать приложение для его корректной работы в 64-разрядной системе. И вот, когда совсем отчаялся, наткнулся вот на эту страничку:
http://excelvba.ru/programmes/Fill_Invoice
После скачивания вложения bank.xls потребовалось всего лишь открыть файл, запустить редактор VBA и выполнить экспорт формы Form_SelectDate и модуля Date_and_Time в отдельную (теперь драгоценную для меня папку). При создании какого-либо проекта просто выполнить, теперь уже, импорт ранее экспортированных файлов и вы получаете весьма симпатичный и функциональный календарь.
А значение даты можно получать от свойства Text соответствующего текстового поля.

Дмитрий Борцов
О типе переменной Static

Очевидно, что если мы объявляем переменную как Static, то по оканчании процедуры эта переменная продолжает хранить присвоенное ей значение. В том же случае тип переменной Dim обнулит/удалит значение. Вопрос:

1. Где хранятся значения переменной типа Static после завершения процедуры? Может есть особая область памяти? или эти значения выгружаются на жесткий диск в временные файлы? где...? 

2. Что есть момент обнуления/удаления значения статической переменной? Может достаточно свернуть программу или закрыть ее? А может быть данные обнулятся только после перезагрузки компьютера? Или для обнуления должна быть выполнена специальная команда? когда...?