Взаимодействие макросов - Call - ByVal, ByRef (Серия VBA 13)

  Рет қаралды 35,994

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

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

Күн бұрын

Пікірлер: 82
@АндрейЛесников-з8ч
@АндрейЛесников-з8ч 5 жыл бұрын
Мега-мега-мегаграмотное изложение материала и продуктивные уроки! Редкость на просторах интернета! Низкий Вам поклон за столь эффективное изложение материала по VBA! Вы педагог от Бога, продолжайте в том же духе! Низкий поклон за труды! Не поленюсь и напишу это коммент по каждым видео курса!!!
@BilyalKhassenov
@BilyalKhassenov 5 жыл бұрын
Здравствуйте, Андрей! Со своей стороны точно также не поленюсь и поблагодарю Вас за этот приятный комментарий под каждым видео точно так же :) С уважением и хорошего Вам дня, ХБ
@walerij
@walerij 3 жыл бұрын
Полностью согласен!
@maksimkisliak4782
@maksimkisliak4782 3 жыл бұрын
Ты единственный на русскоязычном ютубе, кто толково разжевывает все! Только тебя смотрю каждый раз
@vasiliyfm7595
@vasiliyfm7595 4 жыл бұрын
Спасибо, изложение материала самое грамотное и понятное, что я до этого встречал ) При этом если раньше материал усваивался в легкую, то с предыдущего урока стало чувствоваться, что сложность нарастает ))
@alexreznik6485
@alexreznik6485 5 ай бұрын
огромное спасибо за грамотный и чрезвычайно наглядный видео-урок.Ценю ваше умение разъяснять сложные концепции простым языком и использовать наглядные примеры.
@ImmortalBullet88
@ImmortalBullet88 Жыл бұрын
Огромное спасибо, супер курсы. Мне кажется, что этот курс можно вообще всем начинающим программистам давать, не зависимо от языка. Так как тут все подробно рассказывается, все основы!
@walerij
@walerij 3 жыл бұрын
Подверждаю, на эту тему действительно очень мало русскоязычной информации в KZbin. Чёткое объяснение. Спасибо. Теперь нужно будет подумать, как встроить в моё множество макросов эти ByVal и ByRef. Потому что я их почти не использовал.
@МихаилБуев-е1ш
@МихаилБуев-е1ш 4 жыл бұрын
Очень полезно, столько лет работаю с ВБА, но сути не понимал раньше, просто брал готовые коды в интернете на форумах и пользовался ими, иногда чуток редактируя их, а сейчас решил разобраться и понять, изложение на 5 баллов!
@ЕвгенийЛапшин-з1д
@ЕвгенийЛапшин-з1д 4 жыл бұрын
просмотрел 10 видео и принялся на основе полученных знаний "фиксить" свой говнокод...реально заработало, то что "работало" 2 мин, работает за 2 сек) я капец как был приятно удивлён) Спасибо за проделанную работу и труд, по проведению "ликбеза" (ликвидацию безграмотности)
@BilyalKhassenov
@BilyalKhassenov 4 жыл бұрын
Здравствуйте, Евгений! Спасибо за Ваш комментарий! Очень, рад что мои видео помогли Вам в изучении VBA, желаю Вам успехов 😊 С уважением и хороших Вам выходных, Билял
@Rolf22Rus
@Rolf22Rus 4 жыл бұрын
Привет, слушай уроки супер. За неделю мое знание языка с 0 улетело в космос по моим ощущением . Все четко , понятно и по полочкам ! Было желание кодить , но сколько не пытался разобраться не как . А тут одна неделя и я теперь очень многое понял для себя . Во всю уже применяю на работе ! Работая с таблицами ) вобщем еще раз спасибо!
@BilyalKhassenov
@BilyalKhassenov 4 жыл бұрын
Здравствуйте, Иван! Спасибо за Ваш комментарий! Очень рад, что мои видеоуроки помогли Вам в изучении VBA! Буду и дальше стабильно снимать видео, так что stay tuned! 😊 С уважением и хороших Вам выходных, Билял
@АнтонинаБелорус
@АнтонинаБелорус 4 жыл бұрын
И да, уроки просто великолепные, спасибо за ваш труд!!)
@ДмитрийПахомов-б6у
@ДмитрийПахомов-б6у 3 жыл бұрын
А я в 2010 все по книге Джона Уокенбаха учил. Как же везёт молодёжи сейчас!!!
@Simba-Wolf
@Simba-Wolf Жыл бұрын
Легкая доступность повышает конкуренцию. Тут по поводу везения бабушка надвое сказала)
@shavkatpulatov5203
@shavkatpulatov5203 4 жыл бұрын
Привет Билял, очень грамотно и довольно глубоко раскрыта тема, очень полезно.
@BilyalKhassenov
@BilyalKhassenov 4 жыл бұрын
Здравствуйте, Shavkat! Спасибо за Ваш комментарий, рад, что видео было для Вас полезным :) С уважением и хороших Вам выходных, Билял
@Graver24
@Graver24 4 жыл бұрын
с удовольствие, а главное с интересом посмотрел) заполняю пробелы, сидя на карантине)
@BilyalKhassenov
@BilyalKhassenov 4 жыл бұрын
Здравствуйте Андрей, Очень правильно поступаете - используете специфическим образом появившееся время в пользу! 😊 Хороших Вам выходных дней 😊 С уважением, Билял
@Владимир-ь9е7у
@Владимир-ь9е7у 3 жыл бұрын
Билял, каакой же Вы молодец!!!
@Yevd1977
@Yevd1977 Жыл бұрын
Я не использовал byval. Просто в скобках передавал переменную. Все работало. Ну как её явно объявить при приёме во второстепенной процедуре - не знал. VBA сам определял тип. Теперь знаю как. Спасибо, Билял.
@dashok_ro4683
@dashok_ro4683 4 жыл бұрын
У вас просто потрясающий контент. Больше всего мне нравится момент с домашними заданиями, который заставляет самому прочувствовать , как это применять и заранее проработать некоторые ошибки. Мне кажется блог был бы куда популярнее, если бы демонстрировали видеоуроки по другим ,более востребованным языкам программирования,тк тех, кто действительно доступно, последовательно и нескучно объясняет , не уходя в дебри, не так и много. Спасибо вам большое!!!
@BilyalKhassenov
@BilyalKhassenov 4 жыл бұрын
Здравствуйте, Дарья! Извиняюсь за очень долгий ответ! Большое спасибо за Ваш комментарий - очень рад что видео с канала Вам понравились и приносят пользу. Если будут вопросы - всегда пишите (я постараюсь на них как можно быстрее отвечать)! А я сейчас как раз отвечу на один из вопросов в Вашем комментарии под другим видео 😊 Оставайтесь здоровой в нынешней ситуации с вирусом и хорошего Вам дня! С уважением, Билял
@SamSambl4
@SamSambl4 4 жыл бұрын
Спасибо за труд!
@bananamastersup
@bananamastersup 3 жыл бұрын
Решил домашнее задание предыдущего урока иначе. Не убирал заголовки для динамичного массива в нижней границе. Вместо этого указал начальное значение массива 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 Еще раз спасибо за уроки! Интересно прорешивать домашние задания самому, и сравнивать, как их решают другие.
@nesquikttw
@nesquikttw 3 жыл бұрын
По ДЗ очень усложнил. У меня код в 2 раза короче и работает. Нужно было задание ставить сложнее, чтоб был смысл в диапазонах, иначе все все решается простым For each i in range(cells(#,#), cells(Lastrow,#).
@s.j5206
@s.j5206 4 жыл бұрын
За такие уроки я бы рекламу смотрел полностью, будь она интегрирована в ролик. Спасибо за обучение!
@grigorymoroz8055
@grigorymoroz8055 3 жыл бұрын
Огромное спасибо за твои уроки, просто пушка, лайк на все! А вот по поводу домашнего задания с урока 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э
@АлексейПластовец-щ8э 3 жыл бұрын
Так, стоять, мы же договаривались, что используем только long!)))
@ДмитрийАнтонов-о2ф
@ДмитрийАнтонов-о2ф 3 жыл бұрын
Большое спасибо!
@pilot39938
@pilot39938 3 жыл бұрын
Отличные видео, спасибо!
@yohohowowowo9471
@yohohowowowo9471 11 ай бұрын
Это как ребёнка, сначала учить ползать, а потом БЕЖАТЬ. Даже имея небольшой опыт в программировании, от количества информации закипел. Пытался записывать, потом понял, что кода на несколько листов. Изложено хорошо, но с SET промашка, хорошо хоть я знаком с этой функцией, но для большинства людей, это взрыв мозга)))
@user-zc4oq7bp5e
@user-zc4oq7bp5e Жыл бұрын
Добрый день, хотел сказать большое спасибо за ваши видео-уроки, мне очень помогли! У меня по какой-то причине не работают динамические массивы, хотя я переписал код у вас полностью. Скажите пожалуйста, какую версию Excel вы используете
@JASTOK
@JASTOK 3 жыл бұрын
Вот это уже прям жоска
@dr.livesey5157
@dr.livesey5157 2 жыл бұрын
Большое спасибо за уроки, качество и полнота подачи на высшем уровне! Хотел узнать, влияет ли как-то на производительность сокращение 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м
@ИванИванов-в3ъ4м 4 жыл бұрын
Добрый день! Почему вы не пользуетесь клавишей F8 для наглядности, и окном immedium?
@user-friendly55412
@user-friendly55412 3 жыл бұрын
Билял, добрый день. Благодарю за понятное изложение материала! Можно ли вызвать вспомогательную процедуру через переменную? Например, присвоить переменной значение вида "Set x = Module2.auxProc", а при вызове процедуры использовать переменную "Call x"? Какой тип переменной нужно указывать в данном случае?
@BilyalKhassenov
@BilyalKhassenov 3 жыл бұрын
Здравствуйте, Андрей! Всегда пожалуйста, рад что видео на канале Вам помогают 😊 Касательно Вашего вопроса - да, это возможно. Только в таком случае используется команда 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-friendly55412
@user-friendly55412 3 жыл бұрын
@@BilyalKhassenov спасибо, это просто бомба. Как и весь ваш курс! Пользуясь случаем скажу, что новый курс по vba более структурированный и ещё лучше доносит информацию) жду его продолжения) Ещё раз выражаю вам огромную благодарность!
@nickolayarbuzov6149
@nickolayarbuzov6149 4 жыл бұрын
Здравствуйте, Билял Встречались ли Вы с асинхронностью в VBA ? И можно ли упорядочить выполнение функций в VBA в виде callback ? Есть примеры: когда надо сделать рамку по размеру контента, но рамка рисуется до того, как весь контент сформировался; или например подсчитывается значение, чтобы затем использовать его далее, в других расчетах, но обращение к этому значению происходит до того, как оно подсчитано. Но в VBA менее популярный язык, чем стандартные ЯП, поэтому информации на эту тему я както и не встречал
@РамильШаяхметов-к7в
@РамильШаяхметов-к7в 5 жыл бұрын
Добрый день! Спасибо за уроки! Можешь плз уточнить по поводу ByRef: Не совсем понятно по какой логике измененная переменная receivedrange (когда она становится = G2:J8 во вспомогательной процедуре) обратно возвращается в основную процедуру и заменяет значение переменной rangeinfotosend?
@BilyalKhassenov
@BilyalKhassenov 5 жыл бұрын
Здравствуйте, Рамиль! Вот другой вариант объяснения: 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в
@РамильШаяхметов-к7в 5 жыл бұрын
@@BilyalKhassenov Благодарю за ответ! Вроде как разобрался. Если правильно понял, то при ByRef передается адрес переменной (получается что-то вроде "подключения" к адресу) и уже таким образом имеем возможность изменить её значение через обе переменные - как в основной процедуре, так и во вспомогательной. Как-то так сейчас у меня это в голове :) Еще раз спасибо!
@BilyalKhassenov
@BilyalKhassenov 5 жыл бұрын
Не за что! Рад помочь :)
@Serega_Zaicev
@Serega_Zaicev Жыл бұрын
@@BilyalKhassenov Мне Этот код больше понятен, СПАСИБО БОЛЬШОЕ !!!! а то реально завис после двух просмотров, а тут в комментах полезно полазить оказалось)))
@primakovsan4oys
@primakovsan4oys 3 жыл бұрын
Здравствуйте! Спасибо большое за этот цикл видео, очень интересно и доступно получилось) Подскажите, пожалуйста, как работать с диаграммами 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я
@АлексейИванов-у6з1я 2 жыл бұрын
Билял, приветствую. А как передавать параметры между элементами юзерформ. К примеру, нужно что бы при нажатии на команбатон была возможность обратится к массиву, который перед этим использовался в комбобоксе? Именно к последним изменениям этого массива.? Спасибо.
@delloff9866
@delloff9866 Жыл бұрын
Я решил домашнее задание через один динамический массив с именами. К ним просто подставлял оценки из соседней колонки через for loop
@sinsmith9687
@sinsmith9687 3 жыл бұрын
Все супер. Только не пойму где это применяется - ByRef. Это как рекурсия своего рода? Можно еще пример =) ?
@rentierrichy7907
@rentierrichy7907 4 жыл бұрын
19:08 Не совсем понятно использование выражения "uBoundVariable = lastRow - 1" для исключения заголовков (???). Логично использование этого выражения для определения нижней границы массива, равное 5. А по ходу чтения кода и так видно, что при использовании ссылок на столбцы B и C со счетчиком i + 1 заголовки по любому не будут присваиваться переменным nameArr и gradeArr. И потом, динамический массив включает в себя новые значения в ячейках, которые являются смежными, т.е. непосредственно у границ диапазона данных? А если внести новые значения "проскочив" одну ячейку, будет ли массив содержать эти значения? Благодарю!
@АнтонПавленин-п8ш
@АнтонПавленин-п8ш 3 жыл бұрын
Отличные уроки! Спасибо, Билял! Я что-то пропустил. Команда SET появилась внезапно. Это типа DIM, но для процедур?
@ИванМанченко-ж3г
@ИванМанченко-ж3г 3 жыл бұрын
для объектов
@НатальяБелова-у8я
@НатальяБелова-у8я 2 жыл бұрын
Тема для меня пока туманна. Буду разбираться.
@ZigZagUdachich
@ZigZagUdachich 4 жыл бұрын
Добрый день! Есть ли возможность передавать процедуре в качестве параметров список других процедур, пусть даже фиксированное количество, но возможно ли это сделать и если да, то как?
@BilyalKhassenov
@BilyalKhassenov 4 жыл бұрын
Здравствуйте, Павел! Спасибо за Ваш вопрос - он и вправду интересен и важен! Передавать процедуре в качестве параметров список других процедур вполне возможно. Например, для этого можно использовать массивы. При этом учтите, что массивы всегда передаются в процедуры с параметрами с настройкой 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
@prostories7855 Жыл бұрын
Здравствуйте. Подскажите пожалуйста, почему вы задаете range Info To Sent As String? А не range. B2:E5 это же область
@yellowmoonishka1725
@yellowmoonishka1725 9 ай бұрын
спс
@ОльгаЧудаева-е5э
@ОльгаЧудаева-е5э Жыл бұрын
Как вернуть значение переменной byref из функции, которая размещена в надстройке?
@You-Rock
@You-Rock 3 жыл бұрын
Спасибо большое за объяснение, но я бы в такой конструкции тупо объявил переменные публично)
@АндрейКлёпа
@АндрейКлёпа 2 жыл бұрын
Здравствуйте, не подскажете, вообще это нормально, если я какую-то функцию зациклил по таймеру на проверку значений
@АльбинаСкорова
@АльбинаСкорова 3 жыл бұрын
Мой рептилойдный мозг отказывается воспринимать это. Придëтся пересмотреть всë много раз. Как же всë сложно
@BilyalKhassenov
@BilyalKhassenov 3 жыл бұрын
😅
@ДляИнформации-с4ы
@ДляИнформации-с4ы Жыл бұрын
То же самое... первые 8 уроков 3 раза песматривал_перепечатал- выучил короче, дальше не могу разжевать...
@evgenbeg5095
@evgenbeg5095 5 жыл бұрын
Подскажи подалуйста, как вывести на печать (принтер) данные из ЛистБокса только выделеные (мультилайн)
@BilyalKhassenov
@BilyalKhassenov 5 жыл бұрын
Здравствуйте, 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, Вы можете настроить данный пункт под себя :)
@evgenbeg5095
@evgenbeg5095 5 жыл бұрын
Спасибо, попробую
@Aleksandr.Bartov
@Aleksandr.Bartov 5 жыл бұрын
А можно как-то просмотреть весь список подпрограмм в модулях?
@BilyalKhassenov
@BilyalKhassenov 5 жыл бұрын
Здравствуйте, Александр! Извиняюсь за долгий ответ. Да, можно написать такой макрос, правда, там нужно работать с Reference VBA Examinability. Я еще сам подобный макрос не пробывал, поэтому пока не стал бы давать Вам дальнейших советов. Возможно, чуть позже (как сам более подробно изучу данный вопрос) сниму отдельное видео на эту тему. Хорошего Вам воскресенья, Александр! :) С уважением, ХБ
@Aleksandr.Bartov
@Aleksandr.Bartov 5 жыл бұрын
@@BilyalKhassenov Спасибо. Я думал что можно как-то стандартно это просмотреть. Не все так просто оказывается.
@whereamibluesky3554
@whereamibluesky3554 3 жыл бұрын
Вариант домашки к 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-en8ko2vd1k
@user-en8ko2vd1k 2 жыл бұрын
17 сен 2022
@АнтонинаБелорус
@АнтонинаБелорус 4 жыл бұрын
А зачем нужны переменные lBoundVariable и u BoundVariable? почему нельзя написать ReDim nameArr (1 to lastrow*)? *lastrow у меня изначально -1 подсчитывался
@АлексейСоков-ь8и
@АлексейСоков-ь8и 3 жыл бұрын
2021
@ГерманРыков-ъ6в
@ГерманРыков-ъ6в 5 жыл бұрын
И все вроде понятно, но 3 раз пересматриваю и не совсем улавливаю практической направленности....
@BilyalKhassenov
@BilyalKhassenov 5 жыл бұрын
Здравствуйте, Герман! Попробуйте на каком-нибудь примере поупражняться, поскольку это и вправду такая тема, которую, как мне кажется, возможно до конца понять и «прочувствовать» лишь после нескольких сессий интенсивной работы на четких примерах. А со временем уже и разовьется чувство, где, когда и какие именно инструменты VBA применять. Да, вот такая творческая нотка в работе с VBA присутствует тоже :) Будут вопросы - обращайтесь! :) С уважением, ХБ
@Айка-в4р
@Айка-в4р 4 ай бұрын
ничего не понятно
@ruidogeothuld3118
@ruidogeothuld3118 Жыл бұрын
Понять бы ещё зачем эти ByVal нужны(
@slavaz9942
@slavaz9942 2 жыл бұрын
Блин зачем так сложно всё объяснять, простой пример простые переменные....но нихера не понятно....кошмар
Как Я Брата ОБМАНУЛ (смешное видео, прикол, юмор, поржать)
00:59
Lamborghini vs Smoke 😱
00:38
Topper Guild
Рет қаралды 57 МЛН
Quilt Challenge, No Skills, Just Luck#Funnyfamily #Partygames #Funny
00:32
Family Games Media
Рет қаралды 47 МЛН
On Error Resume vs. GoTo и работа с ошибками (Серия VBA 36)
21:23
Билял Хасенов – Excel, VBA & More
Рет қаралды 11 М.
FIND в VBA - полный гайд по поиску в VBA (Серия VBA 26)
24:10
Билял Хасенов – Excel, VBA & More
Рет қаралды 26 М.
Формулы в VBA - Три совета (Серия VBA 16)
11:24
Билял Хасенов – Excel, VBA & More
Рет қаралды 25 М.
Советский мультфильм про нашу жизнь !
13:49
Дедушка Аргентинца
Рет қаралды 7 МЛН
«Осень». Самая большая загадка Windows XP
14:36
Девять десятых
Рет қаралды 1,4 МЛН
Многомерные массивы в VBA - (Серия VBA 27)
21:01
Билял Хасенов – Excel, VBA & More
Рет қаралды 19 М.
ПРОСМОТРХ - наследник ВПР
18:32
Nikolay Pavlov
Рет қаралды 174 М.
Dim/Private/Public/Static - Видимость переменных и констант в VBA (Серия VBA 31)
14:23