TextBox & CommandButton VBA - Передача значений - UserForms (10)

  Рет қаралды 28,699

Билял Хасенов – Excel, VBA & More

Билял Хасенов – Excel, VBA & More

4 жыл бұрын

Ссылка на скачивание файла в версии из этого видео: drive.google.com/file/d/1UFRu...
Привет! Давай продолжим изучение пользовательских форм в VBA. В рамках нашей серии практических видео по созданию формы с нуля мы сегодня разработаем собственные алгоритм передачи данных из пользовательской формы в Data Table, умной таблицы, принцип работы которой мы рассмотрели в предыдущем видео.
В этом видео мы добавим на разрабатываемую пользовательскую форсу элементы управления следующих двух типов - TextBox и CommandButton, пропишем им стандартизированные тэги и разработаем базирующийся на цикле For Each принцип проработки отдельных элементов управления.
Приятного просмотра! 😊

Пікірлер: 63
@romancompasscrete2681
@romancompasscrete2681 3 жыл бұрын
Как раз в мою тему ! Занимаюсь арендой авто .Фирма маленькая еще поэтому пока все записи на бумаге . Но тут недавно увидел в интернете видео на английском система бронирования для отелей в эксель .Меня очень заинтересовало и после этого начал вникать в эксель . По английский понимаю и говорю но не на столько .к тому же он рассказывает очень быстро и без подробностей . Интернет мне в помощь - Начал рыться на русских сайтах и форумах не чего похожего нет . На одном из форумов направили можно так сказать на путь и показали несколько возможностей эксель по моей теме и мол "а дальше сам "но и на этом спасибо ! Начал искать как видео по Usreform нашел вас. Стал смотреть весь плэйлист ,но вы превзошли все мои ожидания ! я же говорю на русских ресурсах не чего похожего нет НИ по отелям НИ по аренде авто . Еще бы создали видео "как данный с формы заказа внести в диаграмму " Было бы СУПЕР ! Респект ! подписываюсь
@user-gx5um9fc5f
@user-gx5um9fc5f 4 жыл бұрын
Билял, очень красиво и элегантно! Возьму на вооружение. Спасибо!!!
@BilyalKhassenov
@BilyalKhassenov 4 жыл бұрын
Здравствуйте, Дмитрий! Большое спасибо за Ваш комментарий, очень рад, что видео Вам понравилось 😊 С уважением и хорошего Вам дня, Билял
@user-nb8lv8xg2g
@user-nb8lv8xg2g 3 жыл бұрын
Супер! Билял, мастерское исполнение и объяснение! Осваиваю VBA благодаря Вам.
@SamSambl4
@SamSambl4 4 жыл бұрын
Спасибо за труд!
@BilyalKhassenov
@BilyalKhassenov 4 жыл бұрын
Здравствуйте, Александр! Рад стараться! И спасибо за Ваш комментарий! 😊 С уважением, Билял
@zloomailutube3004
@zloomailutube3004 4 жыл бұрын
Спасибо, Вам, Билял, за все Ваши ролики! Все круто - быстро, где можно "прокрутить"; помедленней, где нужно повнимательней посмотреть; плюс в отличие от подавляющего большинства авторов обучающих роликов у Вас еще и с английским проблем нет, а то слушаешь некоторых, аж выключить хочется )) ...Хотя слово "wrap" все-таки произносится как "рэп", а не "роп" (в каком-то предыдущем ролике) :)... Так держать!
@BilyalKhassenov
@BilyalKhassenov 4 жыл бұрын
Здравствуйте! Большое спасибо за Ваш комментарий и за заметку касательно произношения слова Wrap - взял себе на заметку 😉 Очень жаль правда, что в загруженных видео этого уже никак не изменить. Но да ладно! В остальном же, очень рад, что Вы попали на мой канал - приятного просмотра! 😊 С уважением и хороших Вам выходных, Билял
@hytreg
@hytreg 2 жыл бұрын
Спасибо за урок. Круто объясняешь
@user-po3zj6fl3u
@user-po3zj6fl3u 4 жыл бұрын
Спасибо Билял!
@BilyalKhassenov
@BilyalKhassenov 4 жыл бұрын
Здравствуйте, Сергій! Всегда пожалуйста! 😊 С уважением и хорошего Вам дня, Билял
@sevakworld
@sevakworld 4 жыл бұрын
Интересно, но добавления данных надо упростить. Конечно хорошо сделать динамический, но сложно для новичков, а также для визуального восприятия. Думаю это обоснованно когда на форме очень много элементов (поля для ввода). Также знаю, что много элементов на форме не рекомендуется. Желательно при проверке подсказывать через MsgBox какие поля необходимо обязательно заполнять и передать фокус. С другой стороны один раз написал код и забыл, возьму на заметку. Буду усовершенствовать с учётом выше сказанного, но только при проверке. Добавления данных предпочитаю без заморочками по примеру ниже. Огромное спасибо за труд! Пример: 'Добавить в конец Public Sub AddListRowEnd(strNameListObj As String, strRowData1 As String, strRowData2 As String, strRowData3 As String) Dim ListObj As ListObject Dim ListRow As ListRow Set ListObj = wsSettings.ListObjects(strNameListObj) Set ListRow = ListObj.ListRows.Add(AlwaysInsert:=True) With ListRow .Range(1) = strRowData1 .Range(2) = strRowData2 .Range(3) = strRowData3 End With End Sub Место strRowData можно передать одноуровнненый массив данных ...
@BilyalKhassenov
@BilyalKhassenov 4 жыл бұрын
Здравствуйте, Севак! Всегда пожалуйста и большое спасибо за Ваш комментарий и альтернативный вариант кода 😊 С уважением и хорошего Вам дня, Билял
@Burbon211
@Burbon211 2 жыл бұрын
Согласен слишком заморочено для новичков, мне просто нужно добавить чертову строку из 6 значений, а я 20 минут слушаю как циклы внесения проверяют циклы проверки и про сплит....:(
@Burbon211
@Burbon211 2 жыл бұрын
@@lemuriecnoname согласен, но можно было сперва простейший вариант показать а потом накручивать проверку данных
@Burbon211
@Burbon211 2 жыл бұрын
@@lemuriecnoname спасибо кэп, а то я думал его под дулом автомата заставили именно так сделать.
@user-kv6mu9mb2p
@user-kv6mu9mb2p 3 жыл бұрын
Спасибо!
@user-fh6kz1gp8m
@user-fh6kz1gp8m 3 жыл бұрын
Доброго времени суток! Очень полезные и обучающие видео по VBA у вас! Спасибо большое) Скажите пожалуйста у вас можно взять несколько платных уроков, не могу закончить свой проект по VBA. Очень нужна помощь в написании кода VBA. Заранее Благодарю!
@fasciabeautyhealth3623
@fasciabeautyhealth3623 2 жыл бұрын
Привет! Билял очень позновательные видео я почти все пересмотрел. У меня вопрос в пользовательской форме комбобокс не вставляет значение в ячейку проверял несколько раз на ошибки все отлично. может ли проблема в экселе или в области ячеек 🤔
@user-lh3px1sg2w
@user-lh3px1sg2w 3 жыл бұрын
Билял, подскажи пожалуйста, как сделать событие следующего характера. При вводе в текст бокс значения ( В моем случае цифры) , эта цифра в он лайн отображается в заданной ячейке на листе. То есть ввел я 1, тут же в ячейке а1 появилась 1, продолжаю вводить, 2, (12 число уже получилось) в ячейке отобразилось 12 итд. Без кнопки запись или провести.
@user-fz6xm6vd6i
@user-fz6xm6vd6i 2 жыл бұрын
Билял, здравствуйте! Подскажите, как можно доработать предложенный Вами код проверки заполненных TextBox только на одной странице MultiPage в UserForm?
@user-lh3px1sg2w
@user-lh3px1sg2w 2 жыл бұрын
Билял, приветствую. Про подписи автоматически исчезающие в текст боксах ты не рассказывал в итоге в других видео или я что то пропустил ?
@ppr8117
@ppr8117 4 жыл бұрын
Спасибо! Очень доходчиво! Вопрос: как в TextBox на форме вставить текущую дату по умолчанию? Спасибо
@BilyalKhassenov
@BilyalKhassenov 4 жыл бұрын
Здравствуйте! Спасибо за Ваш комментарий! Поскольку текущая дата динамична и изменяется изо дня в день, я бы вписывал её на Вашем месте в текстбокс при инициализации формы, например вот так: Private Sub UserForm_Initialize() Me.TextBox1.Value = Application.WorksheetFunction.Text(Date, "DD.MM.YYYY") End Sub С уважением и хороших Вам выходных, Билял P.S. Функцию Text я применил для отображения даты в формате "ДД.ММ.ГГГГ", иначе дата будет вписываться в американском формате
@ppr8117
@ppr8117 4 жыл бұрын
Bill K. - Excel & VBA, спасибо!
@dobrinyanicitich7514
@dobrinyanicitich7514 2 жыл бұрын
Как вариант, способ присвоения созданной строки, переменной, в одной строке: Dim lo As ListObject Set lo = ActiveSheet.ListObjects("Таблица1") Dim row As ListRow
@user-ly5iq2ze4m
@user-ly5iq2ze4m Жыл бұрын
Сто раз пересмотрела ролик, ошибки не вижу, но почему то из моей польз формы заполняются всего 2 столбца, в чем дело не знаю.
@alenazurabovna4155
@alenazurabovna4155 2 жыл бұрын
м-да... не для новичков. есть моменты совсем не понятные...запускаю просмотр 4 раз))
@nachfinbolshevik
@nachfinbolshevik 3 жыл бұрын
Здравствуйте! В чём может быть ошибка Код повторил как у вас в уроке, но при добавлении записи ошибку показывает в строке (специально сравнил код с фала из следующего урока) Intersect(rgNewOrderLine, listobjOrderList.ListColumns(strTagArray(0)).DataBodyRange) = objControlChecked.Value Пишет subscript out of range. и строка подчёркивается жёлтым
@BilyalKhassenov
@BilyalKhassenov 3 жыл бұрын
Здравствуйте! Subscript out of Range обычно говорит о том, что нет указываемого столбца в умной таблице - то есть, скажем, Вы обращаетесь к listobjTest.ListColumns(“Проверка1”).DataBodyRange, а в таблице нет столбца, который называется “Проверка1”. Посоветовал бы проверить в этом направлении 😊 С уважением, Билял
@cryoshell99
@cryoshell99 Жыл бұрын
Была подобная ошибка, исправил, сделав заголовки таблицы и теги заглавными в кириллице
@MrVad1964
@MrVad1964 3 жыл бұрын
Доброго времени суток, Билял. Помогите разрешить мой ступор. Я только начинаю заниматься VBA. Не получается передать значение глобальной переменной в форму. В VBAProject в папке Forms созданы две формы UserForm1 и UserForm2. В них пользователь вводит некоторые данные, которые затем будут помещены в таблицу по определенным столбцам в заданной ранее строке N. Переменная N объявлена как глобальная и помещена в начало программы. Значение ей присваивается в вызываемой подпрограмме Cell пример: Public N As Integer ___________________________________ ___________________________________ ______________ Public Sub First() 'модуль2 Call Cell 'модуль4, в нем N получает значение из Input UserForm1.Show 'форма в которой используется переменная N но приходит сюда как равная ноль , хотя значение её из Input не ноль UserForm2.Show 'cюда N также входит как 0 End Sub Что надо прописать еще , чтобы формы увидели значение N
@user-mi1sc2fh3o
@user-mi1sc2fh3o 3 жыл бұрын
сначала была ошибка в строке set, поменял listobjects с orderlist на 1 после ошибка в строке intersect, вот с ней не знаю что делать
@user-mi1sc2fh3o
@user-mi1sc2fh3o 3 жыл бұрын
буду рад если кто-то поможет
@ProoF55
@ProoF55 4 жыл бұрын
Спасибо за такие видео! Вопрос только возник: как сделать или что изменить, чтобы данные вписывались в таблицу на другом листе в этой же книге. В основную таблицу все вписывает и все работает, а во вспомогательной таблицы на другом листе создаются только строки, а данные не вписываются(если таблицу перенести на этот же лист, то через махинации будет тоже записываться, но не хочет записывать данные именно на другом листе книги) П.с. значение переменной, относящиеся к данной книге и листу менял, все работает, просто значения не вписываются Очень жду продолжения!
@BilyalKhassenov
@BilyalKhassenov 4 жыл бұрын
Здравствуйте! Для этого Вам придётся поправить сам алгоритм внесения значений таким образом, чтобы он распознавал, в какую именно таблицу (основную или вспомогательную) нужно вносить значения. Подобное указание можно вписывать в тэги элементов управления формы, например: ИмяЛиста_ИмяDataTable_ИмяСтолбца_ EmptyNotAllowed/EmptyAllowed И, следовательно, поправить алгоритм пришлось бы так, чтобы он использовал данные из тэга и соответственно записывал значения. С уважением и хороших Вам выходных, Билял P.S. Пример расширения структуры тэгов элементов управления представлен в следующем видео этого плейлиста 😊
@Anatoliy1790
@Anatoliy1790 3 жыл бұрын
Доброго дня ! напишите пож ... будет продолжение.... форму мы не доделали... 13 урок прошёл
@BilyalKhassenov
@BilyalKhassenov 3 жыл бұрын
Здравствуйте, Анатолий! Продолжение будет, правда пока не могу сказать, когда именно, так как сейчас делаю упор на новые плейлисты. С уважением, Билял
@andreylebedev1053
@andreylebedev1053 4 жыл бұрын
У меня вопрос. Я делаю игру крестики нолики, и чтобы для каждой кнопки не писать в каждом Private sub CommandButton1_Click1() CommandButton1.Text="X" или "O"(через if..else) я хотел уменьшить код/сделать отдельную программу, которая работала бы для всех 9 кнопок сразу, т.е. нажимая на любую кнопку выполнялась команда выбора "X" или "O" Нашёл как это работает в C#там (не знаю ли поможет это объяснить проблему) Private void CommandButton1_Click1( object sender, EventArgs e) И потом каждый клик на кнопку заполняли таким образом Button senderB= (Button) sender а потом уже просто определяли Х или О ставить , но в vba никак не могу нагуглить как сделать нечто подобное, ничего толкового не выдает, можете подсказать как это сделать ?Буду премного благодарен
@BilyalKhassenov
@BilyalKhassenov 4 жыл бұрын
Здравствуйте, Андрей! По этой ссылке можете скачать пример, с одним из возможных вариантов решения Вашей задачи: drive.google.com/file/d/1pe6eqHt6IQ-4X6i_w-h5El_Bu0XbTYdN/view?usp=sharing В нём я добавил два опшнбаттона, которые указывают, какой игрок (Х или О) ходит следующим. Нажатие каждой из кнопок посылает во вспомогательную процедуру putXorO своё название. Эта процедура сперва проверяет с помощью опшнбаттонов, какой игрок ходит следующим. Если это Х, то соответствующий символ вписывается в переменную strSignToPut. В противном случае «О». После этого при помощи Me.Controls в коммандбаттон, по которому было произведено нажатие, вписывается символ из переменной. Посмотрите файл и потестируйте его. Надеюсь, предложенный вариант сможет Вам помочь! 😊 С уважением и хороших Вам выходных, Билял
@andreylebedev1053
@andreylebedev1053 4 жыл бұрын
@@BilyalKhassenov Огромное спасибо! т.к. надо было уже сдавать, сделал все в лоб, меня интересует один вопрос, я тоже пытался сделать через ByVal, но не получалось. Так вот почему, когда мы вызываем функцию через Call, то в скобочках указываем("CommandButton33"), а там куда эта переменная уходит в скобочках стоит(ByVal strCommandButtonName уже), я почему-то думал, что та переменная, которую мы "отправляем" и должна приниматься, т.е. Call putXorO("CommandButton33"), Sub putXorO(ByVal CommandButton33 As String), я правильно понимаю, что при вызове можно отправить значение, а там где оно принимается можно просто задать сразу переменную, т.е. будет так strCommandButtonName="CaommandButton33". Момент c Me.Controls прям открывает глаза, все думал над тем как сделать, чтобы каждый раз при выборе Х или О выбиралась правильно нужное имя кнопки, теперь понял. Еще раз спасибо!Кстати игру сделать такую, чтобы можно было играть против компьютера, правда логика его ходов рандомная, т.к. более сложная не требовалась да и неохота было делать :)
@user-lh3px1sg2w
@user-lh3px1sg2w 3 жыл бұрын
К первому моему сообщению. И в обратном направлении. В конкретной ячейке появилось значение, оно отображается на листбокс 2 уже. В двух словах зачем мне это. В лист бокс1 ввод В значение, оно автоматом записывается в ячейку, в соседнюю ячейку по критерию из а1 подтягиваются значение из таблицы и возвращается в листбокс 2. Почему так, потому что мне проще работать с листами, чем с формами. Заранее спасибо. Ты и так очень сильно помог.
@BilyalKhassenov
@BilyalKhassenov 3 жыл бұрын
Здравствуйте, Алексей! Всегда пожалуйста, рад что помог! 😊 В Вашей задаче придётся воспользоваться событийной процедурой Change нужного текстбокса. То есть в нём будут отслеживаться все изменения и сразу же вноситься в нужную ячейку. Вероятнее всего придётся поиграть с модальностью формы. С уважением, Билял
@user-lh3px1sg2w
@user-lh3px1sg2w 3 жыл бұрын
@@BilyalKhassenov спасибо. С уважением.
@thanderstaff9593
@thanderstaff9593 2 ай бұрын
Не добавляется строка((( "method add of object listrows failed"
@SensualSuare
@SensualSuare 2 жыл бұрын
Я конечно скорее всего ошибаюсь. Но такое ощущение, что функционал такой таблицы такой же как и в случае, если делать это самым простым способом, как было показано в начале видео.
@igornosach9608
@igornosach9608 2 ай бұрын
Всем привет. А у меня выдает ошибку на строчке (Set listobjOrderList = ThisWorkbook.Worksheets("Исполнительная по электрике").ListObjects("OrderList"))
@igornosach9608
@igornosach9608 2 ай бұрын
run-time error 9 subscript out of range
@Anatoliy1790
@Anatoliy1790 3 жыл бұрын
Ох не получается ... уперся!!! не пойму что день потерял!!
@Burbon211
@Burbon211 2 жыл бұрын
очень очень замороченно, в начале же начал просто писать, подскажи пожалуйста как просто добавлять в последнюю строку значение из формы без этих всех тегов и циклов
@radsy9901
@radsy9901 3 жыл бұрын
А с вами можно както связатсья ?
@user-qn5by5iv7u
@user-qn5by5iv7u 3 жыл бұрын
2021
@user-dr5mg3po7o
@user-dr5mg3po7o Жыл бұрын
Вылетает ошибка, что проверяемый объект не может иметь свойство value. Интересно, где ошибка на самом деле :) Upd: Акела промахнулся и подписал тэги к labelам а не к textboxам :) а код абсолютно верный!
@konstantinvyacheslavovich8217
@konstantinvyacheslavovich8217 Жыл бұрын
я случайно наткнулся на это видео и уже 2 день пытаюсь повторить код, он идентичный с тем что даеться в уроке, но по итогу выдет ошибку 9 (out of range) в чем причина пока не разобрался. Вердикт код не работет спустя 3 года я думаю что причина такова. Intersect(rgNewOrderLine, listobjOrderList.ListColumns(strTagArray(0)).DataBodyRange) = objControlChecked.Value когда начинаешь проверять через дебаг эта страка дется ошибку 9 решил скачать сам файл разработчика и такая же ошибка.
@user-ou7fw1sg1r
@user-ou7fw1sg1r 6 ай бұрын
Intersect функцию напиши с большой буквы))) За два ня можно было профиксить ошибку и исправить
@eleonora4626
@eleonora4626 2 жыл бұрын
Очень подробно, но сложно для восприятия. Если бы мы изучали алфавит: А, Б, В, Г, Д и т.д., то выглядело бы это примерно так: Вот буква «А» с нее начинаются такие слова как: Арбуз, Автобус, Антресоль. Но может она стоять еще и на втором и третьем месте: Аарон, Анатолий. Также их может быть и по нескольку в слове. Например Ананас, Анатомия. В принципе, буква А не обязательно должна быть на первом месте, хотя является наиболее употребимой буквой в русском алфавите. Если рассматривать использование буквы а в частях речи, то ее значение….. ну и так далее. Пока дойдешь хотя бы до буквы Д, уже и забудешь с чего начинал. Подробности важны, но они должны быть к месту, а не лишней информацией в контексте изучаемой темы. У меня стояла простая задача: создать с помощью vba диалоговое окно с единственным текстовым полем, в которое вписывалось бы значение, добавляемое в таблицу. Убил уже 3 дня, но так еще и не смог реализовать свою задачу. Зато узнал про циклы.
@user-os3zi1hv2l
@user-os3zi1hv2l Жыл бұрын
3 РАЗА НАБИРАЛ...НЕ РАБОТАЕТ...простите
@KarpovEvgeniy
@KarpovEvgeniy 9 ай бұрын
Спасибо!
ComboBox VBA - UserForms (11)
23:39
Билял Хасенов – Excel, VBA & More
Рет қаралды 21 М.
OptionButton + Взаимодействие с ComboBox VBA - UserForms (12)
15:44
Билял Хасенов – Excel, VBA & More
Рет қаралды 13 М.
50 YouTubers Fight For $1,000,000
41:27
MrBeast
Рет қаралды 166 МЛН
Slow motion boy #shorts by Tsuriki Show
00:14
Tsuriki Show
Рет қаралды 4,7 МЛН
Alex hid in the closet #shorts
00:14
Mihdens
Рет қаралды 7 МЛН
Microsoft Excel / Таблицы / Срезы
7:43
Артемий Долгирев
Рет қаралды 4,2 М.
VBA. УРОК 10: ОБЪЕКТНАЯ МОДЕЛЬ EXCEL
22:25
Бархатов Виталий (EXCEL, VBA, PowerBI)
Рет қаралды 1 М.
Пишу простую, но реальную программу. Python + Excel.
18:48
Клуб дедов-программистов
Рет қаралды 135 М.
How to Create a Data Entry Form in Excel
34:30
Excel Macro Mastery
Рет қаралды 263 М.
VISIO+VBA | #2 What is Visual Basic for Applications
12:06
Vigil IT-video
Рет қаралды 6 М.
50 YouTubers Fight For $1,000,000
41:27
MrBeast
Рет қаралды 166 МЛН