
Взаимодействие макросов - Call - ByVal, ByRef (Серия VBA 13)
содержание видео
Дата: 2021-09-02
Похожие видео
Комментарии и отзывы: 10
San4oys
Здравствуйте! Спасибо большое за этот цикл видео, очень интересно и доступно получилось) Подскажите, пожалуйста, как работать с диаграммами 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
ответить
Здравствуйте! Спасибо большое за этот цикл видео, очень интересно и доступно получилось) Подскажите, пожалуйста, как работать с диаграммами 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
ответить
Rentier
19: 08 Не совсем понятно использование выражения uBoundVariable = lastRow - 1 для исключения заголовков. Логично использование этого выражения для определения нижней границы массива, равное 5. А по ходу чтения кода и так видно, что при использовании ссылок на столбцы B и C со счетчиком i + 1 заголовки по любому не будут присваиваться переменным nameArr и gradeArr.
И потом, динамический массив включает в себя новые значения в ячейках, которые являются смежными, т. е. непосредственно у границ диапазона данных? А если внести новые значения проскочив одну ячейку, будет ли массив содержать эти значения?
Благодарю!
ответить
19: 08 Не совсем понятно использование выражения uBoundVariable = lastRow - 1 для исключения заголовков. Логично использование этого выражения для определения нижней границы массива, равное 5. А по ходу чтения кода и так видно, что при использовании ссылок на столбцы B и C со счетчиком i + 1 заголовки по любому не будут присваиваться переменным nameArr и gradeArr.
И потом, динамический массив включает в себя новые значения в ячейках, которые являются смежными, т. е. непосредственно у границ диапазона данных? А если внести новые значения проскочив одну ячейку, будет ли массив содержать эти значения?
Благодарю!
ответить
Эмин
Решил домашнее задание предыдущего урока иначе. Не убирал заголовки для динамичного массива в нижней границе. Вместо этого указал начальное значение массива 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
Еще раз спасибо за уроки! Интересно прорешивать домашние задания самому, и сравнивать, как их решают другие.
ответить
Решил домашнее задание предыдущего урока иначе. Не убирал заголовки для динамичного массива в нижней границе. Вместо этого указал начальное значение массива 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
Еще раз спасибо за уроки! Интересно прорешивать домашние задания самому, и сравнивать, как их решают другие.
ответить
Nickolay
Здравствуйте, Билял
Встречались ли Вы с асинхронностью в VBA? И можно ли упорядочить выполнение функций в VBA в виде callback?
Есть примеры: когда надо сделать рамку по размеру контента, но рамка рисуется до того, как весь контент сформировался; или например подсчитывается значение, чтобы затем использовать его далее, в других расчетах, но обращение к этому значению происходит до того, как оно подсчитано.
Но в VBA менее популярный язык, чем стандартные ЯП, поэтому информации на эту тему я както и не встречал
ответить
Здравствуйте, Билял
Встречались ли Вы с асинхронностью в VBA? И можно ли упорядочить выполнение функций в VBA в виде callback?
Есть примеры: когда надо сделать рамку по размеру контента, но рамка рисуется до того, как весь контент сформировался; или например подсчитывается значение, чтобы затем использовать его далее, в других расчетах, но обращение к этому значению происходит до того, как оно подсчитано.
Но в VBA менее популярный язык, чем стандартные ЯП, поэтому информации на эту тему я както и не встречал
ответить
Dashok_
У вас просто потрясающий контент. Больше всего мне нравится момент с домашними заданиями, который заставляет самому прочувствовать, как это применять и заранее проработать некоторые ошибки. Мне кажется блог был бы куда популярнее, если бы демонстрировали видеоуроки по другим, более востребованным языкам программирования, тк тех, кто действительно доступно, последовательно и нескучно объясняет, не уходя в дебри, не так и много. Спасибо вам большое!
ответить
У вас просто потрясающий контент. Больше всего мне нравится момент с домашними заданиями, который заставляет самому прочувствовать, как это применять и заранее проработать некоторые ошибки. Мне кажется блог был бы куда популярнее, если бы демонстрировали видеоуроки по другим, более востребованным языкам программирования, тк тех, кто действительно доступно, последовательно и нескучно объясняет, не уходя в дебри, не так и много. Спасибо вам большое!
ответить
Армен
Спасибо, а я до этого передавал значения в основную процедуру через значение дополнительной процедуры, если надо было много переменных передать, то в виде массива. Хотя если честно сильно это код не уменьшает, ведь теперь надо прописывать для каждой переменной byRef, а для работы с byVal можно просто писать переменную и всё будет работать. Но в целом дополнительные возможности никогда не были лишними.
ответить
Спасибо, а я до этого передавал значения в основную процедуру через значение дополнительной процедуры, если надо было много переменных передать, то в виде массива. Хотя если честно сильно это код не уменьшает, ведь теперь надо прописывать для каждой переменной byRef, а для работы с byVal можно просто писать переменную и всё будет работать. Но в целом дополнительные возможности никогда не были лишними.
ответить
Digital
Привет, слушай уроки супер. За неделю мое знание языка с 0 улетело в космос по моим ощущением. Все четко, понятно и по полочкам! Было желание кодить, но сколько не пытался разобраться не как. А тут одна неделя и я теперь очень многое понял для себя. Во всю уже применяю на работе! Работая с таблицами ) вобщем еще раз спасибо!
ответить
Привет, слушай уроки супер. За неделю мое знание языка с 0 улетело в космос по моим ощущением. Все четко, понятно и по полочкам! Было желание кодить, но сколько не пытался разобраться не как. А тут одна неделя и я теперь очень многое понял для себя. Во всю уже применяю на работе! Работая с таблицами ) вобщем еще раз спасибо!
ответить
Андрей
Билял, добрый день. Благодарю за понятное изложение материала! Можно ли вызвать вспомогательную процедуру через переменную? Например, присвоить переменной значение вида Set x = Module2. auxProc, а при вызове процедуры использовать переменную Call x? Какой тип переменной нужно указывать в данном случае?
ответить
Билял, добрый день. Благодарю за понятное изложение материала! Можно ли вызвать вспомогательную процедуру через переменную? Например, присвоить переменной значение вида Set x = Module2. auxProc, а при вызове процедуры использовать переменную Call x? Какой тип переменной нужно указывать в данном случае?
ответить
Андрей
Мега-мега-мегаграмотное изложение материала и продуктивные уроки! Редкость на просторах интернета! Низкий Вам поклон за столь эффективное изложение материала по VBA! Вы педагог от Бога, продолжайте в том же духе! Низкий поклон за труды! Не поленюсь и напишу это коммент по каждым видео курса!
ответить
Мега-мега-мегаграмотное изложение материала и продуктивные уроки! Редкость на просторах интернета! Низкий Вам поклон за столь эффективное изложение материала по VBA! Вы педагог от Бога, продолжайте в том же духе! Низкий поклон за труды! Не поленюсь и напишу это коммент по каждым видео курса!
ответить
Рамиль
Добрый день!
Спасибо за уроки!
Можешь плз уточнить по поводу ByRef:
Не совсем понятно по какой логике измененная переменная receivedrange (когда она становится = G2: J8 во вспомогательной процедуре) обратно возвращается в основную процедуру и заменяет значение переменной rangeinfotosend?
ответить
Добрый день!
Спасибо за уроки!
Можешь плз уточнить по поводу ByRef:
Не совсем понятно по какой логике измененная переменная receivedrange (когда она становится = G2: J8 во вспомогательной процедуре) обратно возвращается в основную процедуру и заменяет значение переменной rangeinfotosend?
ответить
Добавить отзыв, комментарий
Другие видео канала















