For и For Each (Серия VBA 8)
Вставка
- Опубліковано 28 вер 2018
- Привет! В этом видео мы познакомимся с нашим первым, и пожалуй самым важным циклом в VBA - For и его подвидом For Each.
Как обычно, видео-урок полон интересных и доступных примеров, в которых мы с Вами познакомимся с самым важным касательно темы циклов For и For Each.
Конечно же подписывайтесь на канал, чтобы увидеть дальнейшие уроки из нашей серии изучения VBA. Приятного просмотра! :)
Мега-мега-мегаграмотное изложение материала и продуктивные уроки! Редкость на просторах интернета! Низкий Вам поклон за столь эффективное изложение материала по VBA! Вы педагог от Бога, продолжайте в том же духе! Низкий поклон за труды! Не поленюсь и напишу это коммент по каждым видео курса!!!
Здравствуйте, Андрей!
Со своей стороны точно также не поленюсь и поблагодарю Вас за этот приятный комментарий под каждым видео точно так же :)
С уважением и хорошего Вам дня,
ХБ
Отличный урок, наверное это самые лучшие уроки на UA-cam!
Здравствуйте, Александр! Большое спасибо за Ваш комментарий!
Хорошего Вам воскресенья! :)
С уважением,
ХБ
Добрый вечер.Спасибо ,что откликнулись.Ваши уроки действительно очень доступны.Начал понимать то чего раньше не мог понять.СПАСИБО!
То, что Вы написали, Сергей, и является для меня главным стимулом к созданию видеоуроков. Очень рад, что смог помочь Вам, хорошего дня! :)
Все понятно и поучительно.Спасибо за уроки.
Здравствуйте, Сергей! Очень рад, что Вам понравилось. На следующей неделе постараюсь снять следующий урок из серии о VBA. Если у Вас есть какие-либо вопросы/пожелания, можете смело писать. И с новым годом Вас, всего самого лучшего! :)
09:20 "... порядок такой же, как мы с вами читаем книгу..." - это лучшее объяснение, что я слышал. 5 баллов!
Здравствуйте. Спасибо за курс по vba. Гораздо понятнее, чем читать книги по данной тематике. Крутые видео! без лишнего, звук хороший. Вы молодец.
Здравствуйте, Сергей! Большое спасибо за Ваш комментарий!
Очень рад, что видеоуроки Вам нравятся и полезны, буду держать их качество на уровне.
Хороших Вам выходных, Сергей! :)
С уважением
ХБ
Поищите еще в инете ряд Надстроек чужих - там часто исходный код не закрыт, можно почитать, подчерпнуть для себя многое.
Я в восторге от этих уроков. Трудно даже представить более успешный и эффективный формат видеобучения по VBA. Моё почтение! 🧐
По-мрему самый лучший курс по VBA. Все очень доходчиво и мало ненужной инфы. Спасибо!
Благодарю! Всё попробовал повторить - всё понял, освоил. Отличное изложение материала!
Спасибо! Всё ясно и понятно!
Очень жалею, что не увидел раньше ваши видео. Отдельное спасибо за msgbox, очень наглядно, когда только начинал осваивать vba постоянно пользовался им
Здравствуйте!
Большое спасибо за Ваш комментарий! Очень рад, что видео Вам понравились :)
Если будут какие-либо вопросы - всегда обращайтесь :)
С уважением,
Билял
Спасибо, очень полезно!
Отлично!!! 5+
Спасибо
Большое спасибо!
Здравствуйте, Ortah!
Всегда пожалуйста, рад помочь 😊
С уважением,
Билял
@@BilyalKhassenov Добрый день! Пожалуйста скажите где я в коде допустила ошибку... Мне это очень важно... Задача- Вычислить заданное целочисленное выражение для данных a, b в формате double, используя оператор if. Исходные данные и результат должны проверяться на область допустимых значений. Для решения задачи разработать функцию.тут еще система только я не смогла ее написать
Function z2(a2 As Double, b1 As Double) As Double
If a2 > b1 Then
x = a2 * b1 - 3
ElseIf a2 = b1 Then
x = 2
Else
x = (a2 ^ 3 + 1) / b1
End If
End Function
Sub ВЫПОЛНИТЬ()
Dim n As Integer
n = Cells(2, 5).Value
Select Case n
Case 2
'решение задачи 2
Dim a2 As Double
Dim b1 As Double
If Cells(5, 8).Value "" Then
a2 = Cells(5, 8).Value
Else
Cells(5, 8).Value
a2 = 0
End If
If Cells(6, 8).Value "" Then
b1 = Cells(6, 8).Value
Else
Cells(6, 8).Value
b1 = 0
End If
Cells(8, 10).Value = z2(a2, b1)
@@immanvahidovna8566 Здравствуйте, Имман!
Функция не работала, потому итоги вычислений «не вписывались» в неё: нужно было вместо x вписывать z2.
Я точно не знаю поставленную перед Вами задачу и как выглядит Ваш рабочий лист, поэтому немного на уровне интуиции сделал следующие поправки. Попробуйте, надеюсь этот код поможет Вам:
Function z2(a2 As Double, b1 As Double) As Double
If a2 > b1 Then
z2 = a2 * b1 - 3
ElseIf a2 = b1 Then
z2 = 2
Else
z2 = (a2 ^ 3 + 1) / b1
End If
End Function
Sub ВЫПОЛНИТЬ()
Dim n As Integer
n = Cells(2, 5).Value
Select Case n
Case 2
'решение задачи 2
Dim a2 As Double
Dim b1 As Double
If Cells(5, 8).Value "" Then
a2 = Cells(5, 8).Value
Else
'Cells(5, 8).Value 'Лишнее
a2 = 0
End If
If Cells(6, 8).Value "" Then
b1 = Cells(6, 8).Value
Else
'Cells(6, 8).Value 'Лишнее
b1 = 0
End If
End Select
Cells(8, 10).Value = z2(a2, b1)
End Sub
Узнать больше о темах функций и конструкции Select Case Вы можете в следующих видео:
ua-cam.com/video/6AThedpXR7k/v-deo.html
ua-cam.com/video/5B24hKE85hc/v-deo.html
С уважением,
Билял
Билял Хасенов - Excel & VBA спасибо большое)
Как только ты сказал For я тут же представил i. Это магия ))
Здравствуйте!
Вот-вот! Это как раз то, что я и имел ввиду под «интуицией» программирования в ответе на Ваш предыдущий комментарий 😊
С уважением,
Билял
Я обычно смотрю ( как и встречают по одёжке) на картинку. Вижу какой то парень слащявый (Извиняюсь =) ). Ну думаю, давай расскажи какой ты там 10 лет разработчик, профессионал по VBA и т.д.
Начал смотреть. Просто супер человек!!!! По делу, качественно, без всяких ооо, эээ, сейчас поправлю и тому подобное.
Успехов, здоровья и всего самого хорошего!!!!!!!!!
P.S. Еще бы Ваши видео по Word. Там как я понял там сложнее и больше отличий. Или я ошибаюсь?!
Здравствуйте, Александр!
Спасибо за Ваш комментарий - улыбнуло 😊
Рад что видеоуроки Вам понравились 😊
Как-нибудь я обязательно постараюсь снять видео по работе с VBA в Word - там и вправду есть некоторые особенности. Кроме того, постараюсь также рассказать и о комбинации Excel-Word-VBA. Правда, пока, к сожалению, не могу сказать, когда бы видео на подобную тему могли бы выйти.
С уважением и хороших Вам выходных,
Билял
@@BilyalKhassenov =)
Если бы Вы сняли, так же как и про Exel - цены бы Вам не было.
Ну главная мотивация - деньги.
И к сожалению мало людей, кому интересно VBA (для Exel и Word). Многие проблемы решаются руками. Но когда сталкиваешься где без VBA не обойтись, начинаешь лезть на офф. Microsoft в документацию. Но там такая документация, будто пьяный человек просто тыкал по клавиатуре.
Может какую нибудь группу или канал создать про Word VBA, собрать людей которым это интересно, собрать с людей копеечку (в умеренном кол-ве =) )
Будет и полезно и Вам мотивация!
Но! К сожалению люди буду все равно искать бесплатно...
Спасибо большое за вашу работу. Начал вместе с вами изучать VBA. Я все вами показываемые макросы пробую на практике. Для удобства я их сохраняю в Личной книге макросов. Но часть макросов после сохранения в Личной книге макросов не запускаются, а если макрос сохранить прямо в книге, например, Лист1, то все работает.
Возможно, это связано с ThisWorkbook. Сохранив макрос в личной книге с командой ThisWorkbook.... Вы его не запустите для работы в другой книге. Или замените на Activebook, или используйте обьектные переменные.
Не совсем понял разницу двух переменных, но примеры очень понятны и поэтому буду действовать по аналогии
Здравствуйте, Герман!
Если в какой-либо из Ваших задач что-то будет не получатся, можете смело писать в комментарии/обсуждения на канале. Посмотрим вместе, разберемся :)
С уважением и хорошего Вам вечера,
ХБ
Добрый день! А как будет выглядеть код если добавлять нумерованные значения в таблицу? Спасибо 🙏🏻
Здравствуйте, Captain Swan!
Опишите, пожалуйста, поконкретнее ситуацию, и мы с Вам вместе разберемся, как лучше написать код для Вас :)
С уважением,
ХБ
Эффективнее! Bill K. Спасибо что ответили! Необходимо при добавлении записи в таблицу через форму нумеровать ее!
@@captain_swan, здравствуйте!
Можно, конечно, по-разному решить эту задачу. Вот самый простой вариант (возможно, Вам придётся немного поправить его под себя):
1. Создайте UserForm и вставьте в неё TextBox и CommandButton (не меняя стандартных названий, т.е. TextBox1 и CommandButton1). Название UserForm так же оставьте стандартным.
2. Целиком скопируйте и вставьте этот код в модуль UserForm:
Option Explicit
Private Sub CommandButton1_Click()
' Это - процедура для Userform, которая вносит пронумерованные записи в базу данных.
' В форме, по условию, есть TextBox1, в который пользователь вписывает нужно значение,
' а также кнопка CommandButton1 - которая вносит указанное значение пронумерованным в базу данных.
' База данных находится на листе 1. Столбец A - Номер записи, Столбец B - Запись
' База данных должна иметь заголовки
Dim lastRowInDatabase As Long ' Переменная для сохранения последней использованной строки в базе данных
Dim lastRecordNumber As Long ' Переменная для сохранения номера последней записи в базе даных
lastRowInDatabase = ThisWorkbook.Worksheets(1).Range("A" & ThisWorkbook.Worksheets(1).Rows.Count).End(xlUp).Row
lastRecordNumber = ThisWorkbook.Worksheets(1).Range("A" & lastRowInDatabase)
ThisWorkbook.Worksheets(1).Range("A" & lastRowInDatabase + 1) = lastRecordNumber + 1 'Внесение номера текущей записи
ThisWorkbook.Worksheets(1).Range("B" & lastRowInDatabase + 1) = TextBox1 'Внесение содержания текущей записи
End Sub
Как говорилось, это самый простой вариант решения задачи. Мы еще, к сожалению, не дошли до изучения UserForms, поэтому на канале нет видео на эту тему. Надеюсь, смог Вам помочь. Если что, пишите :)
С уважением,
ХБ
P.S. Я решил просто загрузить файл с прописанными выше действиями, чтобы Вам можно было быстрее и легче его посмотреть. Скачать файл можете по этой ссылке:
drive.google.com/file/d/1KaQ5niiLLeqKr6agpEfLkGmUgzKNYUxf/view?usp=sharing
Удачи! :)
Спасибо большое за уделённое время и за очень подробный ответ!!! Все получилось! 1000 лайков и 🍋подписчиков Вам!!!
@@captain_swan Добрый день! Рад помочь :)
Как уже говорилось, это наипростейшее решение. Обязательно посмотрите серии по UserForms (когда они появятся на канале), чтобы усовершенствовать своё решение :)
С уважением,
ХБ
Привет! Все интересно и подробно, но не уловил в чем разница циклов.
Привет. Начни писать реальные проекты, тогда все поймешь. Цикл For .. Next - это основной цикл, чаще всего используется в работе. Используется, когда можешь определить границы цикла. Например, пробежаться по строкам и выполнить определенные действия: удалить строки по определенному критерию (цикл выполняется в обратном порядке), присвоить значения ячейкам (например, пронумеровать) и т.д. For Each - удобный цикл для работы с объектами, коллекциями, массивами, диапазонами данных.
Привет Билял. Спасибо за For each. Я все время пользовался For To, даже когда нужно было исследовать каждую ячейку в определенной области. Я проходил эту область с For To и двумя переменными по столбцам и строкам. А сейчас я написал макрос с For each, который проходит по всем листам книги (54 листа) и в каждом листе по ячейкам в Range(“B8:E52“) -138 ячеек на Value=0 Then ClearContents. Процес длится 10 мин. Это нормально, или что-то не в порядке?
15 сен 2022
Билял Хасенов - Excel, VBA & More: Скажите пожалуйста а как перебрать диапазон с конца в начало ?
странно cells выдает ошибку run time eerror,а c Range все работает,может старая версия? из-за этого?!
Вероятно вы по привычке сделали цикл с 0, а cells принимает от 1.
VBA с Word вы не разбирали ?
ths
Слушаю на 0,75.
Я не знаю, есть ли тут кто-то: подскажите, только у меня не работает Continue For в цикле For Each?