Мега-мега-мегаграмотное изложение материала и продуктивные уроки! Редкость на просторах интернета! Низкий Вам поклон за столь эффективное изложение материала по VBA! Вы педагог от Бога, продолжайте в том же духе! Низкий поклон за труды! Не поленюсь и напишу это коммент по каждым видео курса!!!
@BilyalKhassenov5 жыл бұрын
Здравствуйте, Андрей! Со своей стороны точно также не поленюсь и поблагодарю Вас за этот приятный комментарий под каждым видео точно так же :) С уважением и хорошего Вам дня, ХБ
@walerij3 жыл бұрын
Полностью согласен!
@maksimkisliak47823 жыл бұрын
Ты единственный на русскоязычном ютубе, кто толково разжевывает все! Только тебя смотрю каждый раз
@vasiliyfm75954 жыл бұрын
Спасибо, изложение материала самое грамотное и понятное, что я до этого встречал ) При этом если раньше материал усваивался в легкую, то с предыдущего урока стало чувствоваться, что сложность нарастает ))
@alexreznik64855 ай бұрын
огромное спасибо за грамотный и чрезвычайно наглядный видео-урок.Ценю ваше умение разъяснять сложные концепции простым языком и использовать наглядные примеры.
@ImmortalBullet88 Жыл бұрын
Огромное спасибо, супер курсы. Мне кажется, что этот курс можно вообще всем начинающим программистам давать, не зависимо от языка. Так как тут все подробно рассказывается, все основы!
@walerij3 жыл бұрын
Подверждаю, на эту тему действительно очень мало русскоязычной информации в KZbin. Чёткое объяснение. Спасибо. Теперь нужно будет подумать, как встроить в моё множество макросов эти ByVal и ByRef. Потому что я их почти не использовал.
@МихаилБуев-е1ш4 жыл бұрын
Очень полезно, столько лет работаю с ВБА, но сути не понимал раньше, просто брал готовые коды в интернете на форумах и пользовался ими, иногда чуток редактируя их, а сейчас решил разобраться и понять, изложение на 5 баллов!
@ЕвгенийЛапшин-з1д4 жыл бұрын
просмотрел 10 видео и принялся на основе полученных знаний "фиксить" свой говнокод...реально заработало, то что "работало" 2 мин, работает за 2 сек) я капец как был приятно удивлён) Спасибо за проделанную работу и труд, по проведению "ликбеза" (ликвидацию безграмотности)
@BilyalKhassenov4 жыл бұрын
Здравствуйте, Евгений! Спасибо за Ваш комментарий! Очень, рад что мои видео помогли Вам в изучении VBA, желаю Вам успехов 😊 С уважением и хороших Вам выходных, Билял
@Rolf22Rus4 жыл бұрын
Привет, слушай уроки супер. За неделю мое знание языка с 0 улетело в космос по моим ощущением . Все четко , понятно и по полочкам ! Было желание кодить , но сколько не пытался разобраться не как . А тут одна неделя и я теперь очень многое понял для себя . Во всю уже применяю на работе ! Работая с таблицами ) вобщем еще раз спасибо!
@BilyalKhassenov4 жыл бұрын
Здравствуйте, Иван! Спасибо за Ваш комментарий! Очень рад, что мои видеоуроки помогли Вам в изучении VBA! Буду и дальше стабильно снимать видео, так что stay tuned! 😊 С уважением и хороших Вам выходных, Билял
@АнтонинаБелорус4 жыл бұрын
И да, уроки просто великолепные, спасибо за ваш труд!!)
@ДмитрийПахомов-б6у3 жыл бұрын
А я в 2010 все по книге Джона Уокенбаха учил. Как же везёт молодёжи сейчас!!!
@Simba-Wolf Жыл бұрын
Легкая доступность повышает конкуренцию. Тут по поводу везения бабушка надвое сказала)
@shavkatpulatov52034 жыл бұрын
Привет Билял, очень грамотно и довольно глубоко раскрыта тема, очень полезно.
@BilyalKhassenov4 жыл бұрын
Здравствуйте, Shavkat! Спасибо за Ваш комментарий, рад, что видео было для Вас полезным :) С уважением и хороших Вам выходных, Билял
@Graver244 жыл бұрын
с удовольствие, а главное с интересом посмотрел) заполняю пробелы, сидя на карантине)
@BilyalKhassenov4 жыл бұрын
Здравствуйте Андрей, Очень правильно поступаете - используете специфическим образом появившееся время в пользу! 😊 Хороших Вам выходных дней 😊 С уважением, Билял
@Владимир-ь9е7у3 жыл бұрын
Билял, каакой же Вы молодец!!!
@Yevd1977 Жыл бұрын
Я не использовал byval. Просто в скобках передавал переменную. Все работало. Ну как её явно объявить при приёме во второстепенной процедуре - не знал. VBA сам определял тип. Теперь знаю как. Спасибо, Билял.
@dashok_ro46834 жыл бұрын
У вас просто потрясающий контент. Больше всего мне нравится момент с домашними заданиями, который заставляет самому прочувствовать , как это применять и заранее проработать некоторые ошибки. Мне кажется блог был бы куда популярнее, если бы демонстрировали видеоуроки по другим ,более востребованным языкам программирования,тк тех, кто действительно доступно, последовательно и нескучно объясняет , не уходя в дебри, не так и много. Спасибо вам большое!!!
@BilyalKhassenov4 жыл бұрын
Здравствуйте, Дарья! Извиняюсь за очень долгий ответ! Большое спасибо за Ваш комментарий - очень рад что видео с канала Вам понравились и приносят пользу. Если будут вопросы - всегда пишите (я постараюсь на них как можно быстрее отвечать)! А я сейчас как раз отвечу на один из вопросов в Вашем комментарии под другим видео 😊 Оставайтесь здоровой в нынешней ситуации с вирусом и хорошего Вам дня! С уважением, Билял
@SamSambl44 жыл бұрын
Спасибо за труд!
@bananamastersup3 жыл бұрын
Решил домашнее задание предыдущего урока иначе. Не убирал заголовки для динамичного массива в нижней границе. Вместо этого указал начальное значение массива 2. И не создавал два динамичных массива, "выстаскивал" имена учащихся через Offset. Sub lessionArrays() Dim dynArray() As Long Dim lBoundVar As Long Dim uBoundVar As Long lBoundVar = 2 uBoundVar = Worksheets(4).Range("C" & Rows.Count).End(xlUp).Row ReDim dynArray(lBoundVar To uBoundVar) Dim i As Long For i = LBound(dynArray) To UBound(dynArray) dynArray(i) = ThisWorkbook.Worksheets(4).Range("C" & i) MsgBox Range("C" & i).Offset(0, -1).Value & " оценка: " & dynArray(i) Next i End Sub Еще раз спасибо за уроки! Интересно прорешивать домашние задания самому, и сравнивать, как их решают другие.
@nesquikttw3 жыл бұрын
По ДЗ очень усложнил. У меня код в 2 раза короче и работает. Нужно было задание ставить сложнее, чтоб был смысл в диапазонах, иначе все все решается простым For each i in range(cells(#,#), cells(Lastrow,#).
@s.j52064 жыл бұрын
За такие уроки я бы рекламу смотрел полностью, будь она интегрирована в ролик. Спасибо за обучение!
@grigorymoroz80553 жыл бұрын
Огромное спасибо за твои уроки, просто пушка, лайк на все! А вот по поводу домашнего задания с урока 12, я кажется смог написать его без массивов, поправь, если есть ошибка:) Sub DZ_Urok_12() Dim lastraw As Long lastraw = Worksheets("Лист9").Cells(Rows.Count, 2).End(xlUp).Row Dim i As Long Dim b As Long Dim c As String For i = 2 To lastraw b = Worksheets("Лист").Range("C" & i).Value c = Worksheets("Лист").Range("B" & i).Value MsgBox c & " Получил оценку: " & b Next i End Sub
@АлексейПластовец-щ8э3 жыл бұрын
Так, стоять, мы же договаривались, что используем только long!)))
@ДмитрийАнтонов-о2ф3 жыл бұрын
Большое спасибо!
@pilot399383 жыл бұрын
Отличные видео, спасибо!
@yohohowowowo947111 ай бұрын
Это как ребёнка, сначала учить ползать, а потом БЕЖАТЬ. Даже имея небольшой опыт в программировании, от количества информации закипел. Пытался записывать, потом понял, что кода на несколько листов. Изложено хорошо, но с SET промашка, хорошо хоть я знаком с этой функцией, но для большинства людей, это взрыв мозга)))
@user-zc4oq7bp5e Жыл бұрын
Добрый день, хотел сказать большое спасибо за ваши видео-уроки, мне очень помогли! У меня по какой-то причине не работают динамические массивы, хотя я переписал код у вас полностью. Скажите пожалуйста, какую версию Excel вы используете
@JASTOK3 жыл бұрын
Вот это уже прям жоска
@dr.livesey51572 жыл бұрын
Большое спасибо за уроки, качество и полнота подачи на высшем уровне! Хотел узнать, влияет ли как-то на производительность сокращение with? Мой пример домашнего задания с прошлого урока ниже: Sub dynmcArrays() 'Назначаю переменные Dim dynArray() Dim lastrow As Long Dim firstrow As Long Dim i As Integer lastrow = 3 firstrow = Worksheets(1).cells(Rows.Count, 1).End(xlUp).Row 'Переназначаю границы массива ReDim dynArray(lastrow To firstrow) 'Функция сокращения WITH With ThisWorkbook.Worksheets(1) For i = LBound(dynArray) To UBound(dynArray) MsgBox cells(i, 2) & "'s Grade is " & cells(i, 3) Next i End With End Sub
@ИванИванов-в3ъ4м4 жыл бұрын
Добрый день! Почему вы не пользуетесь клавишей F8 для наглядности, и окном immedium?
@user-friendly554123 жыл бұрын
Билял, добрый день. Благодарю за понятное изложение материала! Можно ли вызвать вспомогательную процедуру через переменную? Например, присвоить переменной значение вида "Set x = Module2.auxProc", а при вызове процедуры использовать переменную "Call x"? Какой тип переменной нужно указывать в данном случае?
@BilyalKhassenov3 жыл бұрын
Здравствуйте, Андрей! Всегда пожалуйста, рад что видео на канале Вам помогают 😊 Касательно Вашего вопроса - да, это возможно. Только в таком случае используется команда Run, а не Call. Вот пример: я создал в файле два модуля - Module1 и Module2. В обоих модулях находится по одной процедуре - mainProcedure и auxProc соответственно. Код вспомогательной, вызываемой процедуры крайне прост - один MsgBox: Sub auxProc() MsgBox "Это сработала вспомогательная процедура!" End Sub Для того чтобы из первой процедуры теперь вызвать вторую процедуру с помощью переменной используем следующий код: Sub mainProcedure() Dim strSubFullName As String strSubFullName = "Module2.auxProc" Run strSubFullName End Sub Получается я создал текстовую переменную strSubFullName и внёс в неё полное имя вызываемой процедуры (то есть, через точку также указал модуль, в котором она хранится). Затем просто с помощью команды Run и подготовленной ранее переменной вызываем нужную процедуру 😊 Удачи в решении задачи, если что пишите еще 😊 С уважением, Билял
@user-friendly554123 жыл бұрын
@@BilyalKhassenov спасибо, это просто бомба. Как и весь ваш курс! Пользуясь случаем скажу, что новый курс по vba более структурированный и ещё лучше доносит информацию) жду его продолжения) Ещё раз выражаю вам огромную благодарность!
@nickolayarbuzov61494 жыл бұрын
Здравствуйте, Билял Встречались ли Вы с асинхронностью в VBA ? И можно ли упорядочить выполнение функций в VBA в виде callback ? Есть примеры: когда надо сделать рамку по размеру контента, но рамка рисуется до того, как весь контент сформировался; или например подсчитывается значение, чтобы затем использовать его далее, в других расчетах, но обращение к этому значению происходит до того, как оно подсчитано. Но в VBA менее популярный язык, чем стандартные ЯП, поэтому информации на эту тему я както и не встречал
@РамильШаяхметов-к7в5 жыл бұрын
Добрый день! Спасибо за уроки! Можешь плз уточнить по поводу ByRef: Не совсем понятно по какой логике измененная переменная receivedrange (когда она становится = G2:J8 во вспомогательной процедуре) обратно возвращается в основную процедуру и заменяет значение переменной rangeinfotosend?
@BilyalKhassenov5 жыл бұрын
Здравствуйте, Рамиль! Вот другой вариант объяснения: ByVal - В случае с этой опцией, Вы отправляете во вспомогательную процедуру значение (например, при помощи переменной) и знаете, что в Вашей основной процедуре значение не поменяется вне зависимости от того, что с этим значением произойдет во вспомогательной переменной. Вот, скопируйте целиком этот код, вставьте в пустом модуле, и запустите процедуру Sub mainProcedure() Dim varToBeChanged As String 'Эта переменная будет отправлена varToBeChanged = "A" 'Задаем ей значение "А" MsgBox "varToBeChanged: " & varToBeChanged 'Проверяем перед отправкой Call changerAuxSub(varToBeChanged) 'Отправляем во вспомогательную процедуру MsgBox "varToBeChanged: " & varToBeChanged 'Проводим контроль с помощью второго Msgbox 'При ByVal второй Msgbox выведет "А", потому что ничего не меняется. ByRef же меняет переменную - поэтому при нем будет выведено "B" End Sub Sub changerAuxSub(ByVal hereItWillBeCalledSo As String) hereItWillBeCalledSo = "B" 'Здесь меняется значение аргумента End Sub Как можете заметить, вывелась два раза буква «А», потому что ByVal не меняет значение. Теперь рассмотрим ByRef. ByRef - В случае с этой опцией, Вы отправляете во вспомогательную процедуру значение (например, при помощи переменной) и внимание! Если это значение во вспомогательной процедуре изменится, то оно отправляется обратно в основную процедуру изменённым. И соответственно значение переменной уже в основной процедуре будет таким, каким оно стало во вспомогательной процедуре. Вот, скопируйте целиком этот код, вставьте в пустом модуле, и запустите процедуру mainProcedure: Sub mainProcedure() Dim varToBeChanged As String 'Эта переменная будет отправлена varToBeChanged = "A" 'Задаем ей значение "А" MsgBox "varToBeChanged: " & varToBeChanged 'Проверяем перед отправкой Call changerAuxSub(varToBeChanged) 'Отправляем во вспомогательную процедуру MsgBox "varToBeChanged: " & varToBeChanged 'Проводим контроль с помощью второго Msgbox 'При ByVal второй Msgbox выведет "А", потому что ничего не меняется. ByRef же меняет переменную - поэтому при нем будет выведено "B" End Sub Sub changerAuxSub(ByRef hereItWillBeCalledSo As String) hereItWillBeCalledSo = "B" 'Здесь меняется значение аргумента End Sub Первый раз Msgbox должен вывести букву «А», а во второй раз букву «В», потому что ByRef меняет значение и отправляет его измененным обратно. С Range всё точно так же, просто с литеральной переменной более понятно, поэтому показал на её примере. С уважением, ХБ P.S. Надеюсь у меня получилось доступно объяснить в письменном виде, тема и вправду немного сложная для понимания. В любом случае, если всё еще не понятно - пишите! Попробуем еще раз зайти с другой стороны :)
@РамильШаяхметов-к7в5 жыл бұрын
@@BilyalKhassenov Благодарю за ответ! Вроде как разобрался. Если правильно понял, то при ByRef передается адрес переменной (получается что-то вроде "подключения" к адресу) и уже таким образом имеем возможность изменить её значение через обе переменные - как в основной процедуре, так и во вспомогательной. Как-то так сейчас у меня это в голове :) Еще раз спасибо!
@BilyalKhassenov5 жыл бұрын
Не за что! Рад помочь :)
@Serega_Zaicev Жыл бұрын
@@BilyalKhassenov Мне Этот код больше понятен, СПАСИБО БОЛЬШОЕ !!!! а то реально завис после двух просмотров, а тут в комментах полезно полазить оказалось)))
@primakovsan4oys3 жыл бұрын
Здравствуйте! Спасибо большое за этот цикл видео, очень интересно и доступно получилось) Подскажите, пожалуйста, как работать с диаграммами VBA? Может у вас есть видео на эту тему или знаете, где можно почитать про это, а то ничего толкового не могу найти. Из кода представленного ниже строится диаграмма не того формата, которого надо (если делать через обычную вставку excel, все нормально). Если задавать диапазон "B13:B" & 14 + i, все работает правильно, но при добавление других столбцов с значениями границ (за которые график не должен выходить) значения X Y меняются местами и получается белиберда(( Пример: Dim myChart1 As Chart 'создаем объект Chart с расположением нового листа по умолчанию Set myChart1 = Workbooks(1).Charts.Add With myChart1 'назначаем объекту Chart источник данных For i = 0 To uBoundVar - 2 .SetSourceData (Sheets("Лист1").Range("B13:D" & 14 + i)) Next i 'переносим диаграмму на "Лист1" (отдельный лист диаграммы удаляется) .ChartType = xlLineMarkers .Location xlLocationAsObject, "Лист1" End With
@АлексейИванов-у6з1я2 жыл бұрын
Билял, приветствую. А как передавать параметры между элементами юзерформ. К примеру, нужно что бы при нажатии на команбатон была возможность обратится к массиву, который перед этим использовался в комбобоксе? Именно к последним изменениям этого массива.? Спасибо.
@delloff9866 Жыл бұрын
Я решил домашнее задание через один динамический массив с именами. К ним просто подставлял оценки из соседней колонки через for loop
@sinsmith96873 жыл бұрын
Все супер. Только не пойму где это применяется - ByRef. Это как рекурсия своего рода? Можно еще пример =) ?
@rentierrichy79074 жыл бұрын
19:08 Не совсем понятно использование выражения "uBoundVariable = lastRow - 1" для исключения заголовков (???). Логично использование этого выражения для определения нижней границы массива, равное 5. А по ходу чтения кода и так видно, что при использовании ссылок на столбцы B и C со счетчиком i + 1 заголовки по любому не будут присваиваться переменным nameArr и gradeArr. И потом, динамический массив включает в себя новые значения в ячейках, которые являются смежными, т.е. непосредственно у границ диапазона данных? А если внести новые значения "проскочив" одну ячейку, будет ли массив содержать эти значения? Благодарю!
@АнтонПавленин-п8ш3 жыл бұрын
Отличные уроки! Спасибо, Билял! Я что-то пропустил. Команда SET появилась внезапно. Это типа DIM, но для процедур?
@ИванМанченко-ж3г3 жыл бұрын
для объектов
@НатальяБелова-у8я2 жыл бұрын
Тема для меня пока туманна. Буду разбираться.
@ZigZagUdachich4 жыл бұрын
Добрый день! Есть ли возможность передавать процедуре в качестве параметров список других процедур, пусть даже фиксированное количество, но возможно ли это сделать и если да, то как?
@BilyalKhassenov4 жыл бұрын
Здравствуйте, Павел! Спасибо за Ваш вопрос - он и вправду интересен и важен! Передавать процедуре в качестве параметров список других процедур вполне возможно. Например, для этого можно использовать массивы. При этом учтите, что массивы всегда передаются в процедуры с параметрами с настройкой ByRef. Смотрите, вот пример - в нём мы передаём имена процедур в текстовом массиве во вспомогательную процедуру. Вставьте этот код в новый модуль и протестируйте: Option Explicit Sub mainSub() 'В основной процедуре создаем и заполняем массив именами трёх тестовых процедур Dim arrListOfSubNames(1 To 3) As String arrListOfSubNames(1) = "testSub1" arrListOfSubNames(2) = "testSub2" arrListOfSubNames(3) = "testSub3" 'Передаём массив во вспомогательную процедуру, которая запускает каждую из тестовых процедур Call helpSubToCall(arrListOfSubNames) End Sub Sub helpSubToCall(ByRef arrSubNames() As String) Dim intCounter As Integer 'Цикл по массивы и запуск тестовых процедур при помощи указания имени процедуры методу Run For intCounter = LBound(arrSubNames) To UBound(arrSubNames) Run arrSubNames(intCounter) Next intCounter End Sub Sub testSub1() MsgBox "1" 'Тестовая процедура 1 End Sub Sub testSub2() MsgBox "2" 'Тестовая процедура 2 End Sub Sub testSub3() MsgBox "3" 'Тестовая процедура 3 End Sub Если будут вопросы - пишите! 😊 С уважением, Билял
@prostories7855 Жыл бұрын
Здравствуйте. Подскажите пожалуйста, почему вы задаете range Info To Sent As String? А не range. B2:E5 это же область
@yellowmoonishka17259 ай бұрын
спс
@ОльгаЧудаева-е5э Жыл бұрын
Как вернуть значение переменной byref из функции, которая размещена в надстройке?
@You-Rock3 жыл бұрын
Спасибо большое за объяснение, но я бы в такой конструкции тупо объявил переменные публично)
@АндрейКлёпа2 жыл бұрын
Здравствуйте, не подскажете, вообще это нормально, если я какую-то функцию зациклил по таймеру на проверку значений
@АльбинаСкорова3 жыл бұрын
Мой рептилойдный мозг отказывается воспринимать это. Придëтся пересмотреть всë много раз. Как же всë сложно
@BilyalKhassenov3 жыл бұрын
😅
@ДляИнформации-с4ы Жыл бұрын
То же самое... первые 8 уроков 3 раза песматривал_перепечатал- выучил короче, дальше не могу разжевать...
@evgenbeg50955 жыл бұрын
Подскажи подалуйста, как вывести на печать (принтер) данные из ЛистБокса только выделеные (мультилайн)
@BilyalKhassenov5 жыл бұрын
Здравствуйте, Evgen! Вот предложение от меня (комментарии содержатся в коде, удобно читать их будет в окне VBA): Private Sub CommandButton1_Click() Dim counter As Long Dim selectedItems As New Collection ' Список выбранных объектов из листбокса будет храниться в коллекции For counter = 0 To ListBox1.ListCount - 1 ' Проверяем каждый объект в списке. If ListBox1.Selected(counter) = True Then ' Если объект выбран, то selectedItems.Add (ListBox1.List(counter)) ' добавляем его в коллекцию выбранных объектов End If Next counter ' Далее Вы можете сами решить, каким образом распечатывать список выбранных объектов из коллекции. ' Например для этого у Вас может быть сохранён шаблон в спрятанном рабочем листе, в который экс- ' портируется список из коллекции и выводится на печать. 'Альтернативно, вот пример с распечаткой из создаваемого временного рабочего листа: Dim ws As Worksheet Set ws = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.count)) ws.Name = "TemporaryWS" For counter = 1 To selectedItems.count ws.Range("A" & counter) = selectedItems.Item(counter) 'Переносим список выбранных объектов из коллекции на временный лист Next counter ws.PrintOut 'Распечатываем ws.Delete 'Удаляем временный лист End Sub С уважением, ХБ P.S. Эта процедура запускается при нажатии кнопки CommandButton1, Вы можете настроить данный пункт под себя :)
@evgenbeg50955 жыл бұрын
Спасибо, попробую
@Aleksandr.Bartov5 жыл бұрын
А можно как-то просмотреть весь список подпрограмм в модулях?
@BilyalKhassenov5 жыл бұрын
Здравствуйте, Александр! Извиняюсь за долгий ответ. Да, можно написать такой макрос, правда, там нужно работать с Reference VBA Examinability. Я еще сам подобный макрос не пробывал, поэтому пока не стал бы давать Вам дальнейших советов. Возможно, чуть позже (как сам более подробно изучу данный вопрос) сниму отдельное видео на эту тему. Хорошего Вам воскресенья, Александр! :) С уважением, ХБ
@Aleksandr.Bartov5 жыл бұрын
@@BilyalKhassenov Спасибо. Я думал что можно как-то стандартно это просмотреть. Не все так просто оказывается.
@whereamibluesky35543 жыл бұрын
Вариант домашки к 12 уроку Sub HW() Dim arr As Variant Dim i As Integer arr = ActiveSheet.UsedRange.Value For i = LBound(arr) + 1 To UBound(arr) MsgBox "Имя: " & arr(i, 2) & "Оценка: " & arr(i, 3) Next i End Sub
@user-en8ko2vd1k2 жыл бұрын
17 сен 2022
@АнтонинаБелорус4 жыл бұрын
А зачем нужны переменные lBoundVariable и u BoundVariable? почему нельзя написать ReDim nameArr (1 to lastrow*)? *lastrow у меня изначально -1 подсчитывался
@АлексейСоков-ь8и3 жыл бұрын
2021
@ГерманРыков-ъ6в5 жыл бұрын
И все вроде понятно, но 3 раз пересматриваю и не совсем улавливаю практической направленности....
@BilyalKhassenov5 жыл бұрын
Здравствуйте, Герман! Попробуйте на каком-нибудь примере поупражняться, поскольку это и вправду такая тема, которую, как мне кажется, возможно до конца понять и «прочувствовать» лишь после нескольких сессий интенсивной работы на четких примерах. А со временем уже и разовьется чувство, где, когда и какие именно инструменты VBA применять. Да, вот такая творческая нотка в работе с VBA присутствует тоже :) Будут вопросы - обращайтесь! :) С уважением, ХБ
@Айка-в4р4 ай бұрын
ничего не понятно
@ruidogeothuld3118 Жыл бұрын
Понять бы ещё зачем эти ByVal нужны(
@slavaz99422 жыл бұрын
Блин зачем так сложно всё объяснять, простой пример простые переменные....но нихера не понятно....кошмар