Консультация № 202375
20.03.2022, 17:46
0.00 руб.
25.03.2022, 13:01
1 12 1
Здравствуйте! У меня возникли сложности с таким вопросом:
Задача 1
Задание: Разработать приложение VBA, которое позволит:
  1. На Листе1 (Числа) в ячейки А1–А20 занести случайным образом значения из интервала (–50; 50).
  2. На Лист1 (Числа) в ячейку С1 записать “Количество +”, а в ячейку D1 поместить подсчитанное значение с количеством положительных чисел.
  3. На Лист1 (Числа) в ячейку С2 записать “Количество –”, а в ячейку D2 поместить подсчитанное значение с количеством отрицательных чисел.
  4. На Лист1 (Числа) в ячейку С3 записать “Количество 0”, а в ячейку D3 поместить подсчитанное значение с количеством чисел, равных нулю.
  5. На Лист2 (Положительные) в ячейку В1 записать “Положительные” и, начиная с ячейки B2, в столбик поместить все положительные числа.
  6. На Лист3 (Отрицательные) в ячейку С1 записать “Отрицательные” и, начиная с ячейки D1, в строку поместить все отрицательные числа.
  7. Создать кнопку “Количество” на листе “Числа”.
  8. Создать кнопку “Перенос” на листе “Числа”.

Задача 2. Нахождение суммы в диапазоне ячеек
Напишите программу вычисления суммы чисел, находящихся в диапазоне ячеек А1:А10, и выведите результаты вычисления с поясняющими надписями в ячейки С2:D2.
Решим эту задачу двумя способами: используя объект Sheets и объект Application (Application.Sum(…))
4.2 Напишите программу вычисления максимума, минимума, среднего значения и произведения чисел, находящихся в диапазоне ячеек А1:А10 на листе “Numbers”. Выведите результаты вычисления с поясняющими надписями в ячейки С2:D5.  Решите эти задачи двумя способами.
Для того чтобы узнать правильное написание функции рабочего листа и ее применение, обратимся к окну Object Browser.
  • Войдем в окно просмотра объектов.
  • Выберем в раскрывающемся списке Проект | Библиотека в верхнем левом углу экрана библиотеку объектов Excel.
  • В окне Классы выберем Application.
  • В окне списка Компоненты выберем Worksheet Function. В нижней части окна появится Property Worksheet Function As Worksheet Function (ссылка).
  • Нажмем на ссылку, и в окне Компоненты появится список всех функций. Используя этот список функций, напишем программу.

4.4  Напишите программу, которая из пары чисел А2 и В2, А3 и В3 и т.д. будет выбирать большее и помещать в столбец D, начиная с ячейки D2. Создайте кнопку для стирания результатов из столбцов А, В и D.
Помогите плиз с 4 лабой до 23.03.22, у меня просто ноут на ремонте у знакомого и хотел бы уже по скорее от неё избавиться, если что, то ниже я прикрепил pdf файл с самой лабй, заранее огромное спасибо ;)
Прикрепленные файлы:
лабораторная работа 4.pdf

Обсуждение

давно
Посетитель
405402
99
20.03.2022, 17:49
общий
Адресаты:
Здравствуйте! Извините за беспокойство, немогли бы пожалуйста помочь с 4 лабой до среды? И ещё, если не затруднит, как можно больше комментариев к ней, где это возможно ))
давно
Посетитель
405402
99
20.03.2022, 17:50
общий
В прошлый раз вы меня очень спасли с этими комментариями
давно
Модератор
137394
1850
21.03.2022, 08:48
общий
21.03.2022, 08:50
это ответ
У Вас прекрасная методичка. Я тупо работал по ней, хотя с некоторыми вещами я бы поступил аккуратнее.
Всю лабораторку я сделал в одной книге на разных листах, прилагаю.
Для иллюстрации коды и скриншот одной задачи (4.3):

Код:
Public Sub Числа_4_3()
Dim I As Integer

Call Очистка_Numbers 'Очистка чисел, результатов подсчетов, перенесенных чисел
Randomize Timer
For I = 1 To 10
Sheets("Numbers").Cells(I, 1) = Int(Rnd * 100) - 50
Next I

End Sub

Public Sub Очистка_Numbers()
With Sheets("Numbers")
.Range("A1:A10").ClearContents
.Range("C2:D5").ClearContents
End With
End Sub

Public Sub Вычисления_4_3_V1()
' Объявление переменных
Dim ValMax As Integer '— переменная для вычисления максимума чисел
Dim ValMin As Integer '— переменная для вычисления минимума чисел
Dim ValAve As Double '— переменная для вычисления среднего чисел
Dim ValPro As Double '— переменная для вычисления произведения чисел
Dim Summa As Integer '— переменная для вычисления суммы чисел

Dim I As Integer '— переменная цикла
Dim R As Integer '— переменная для текущего значения ячейки

With Sheets("Numbers")
ValMax = .Range("A1") ' начальное значение максимума
ValMin = .Range("A1") ' начальное значение минимума
Summa = 0 ' начальное значение суммы
ValPro = 1 ' начальное значение произведения

For I = 1 To 10 ' Суммируем числа в цикле
R = .Cells(I, 1)
Summa = Summa + R
If ValMax < R Then ValMax = R
If ValMin > R Then ValMin = R
ValPro = ValPro * R
Next I
ValAve = Summa / 10

.Range("C2") = "Максимум чисел (V1)=" 'Вывод на лист "Numbers" результаты вычисления с поясняющими надписями
.Range("D2") = ValMax
.Range("C3") = "Минимум чисел (V1)="
.Range("D3") = ValMin
.Range("C4") = "Среднее чисел (V1)="
.Range("D4") = ValAve
.Range("C5") = "Произведение чисел (V1)="
.Range("D5") = ValPro

End With
End Sub

Public Sub Вычисления_4_3_V2()
With Sheets("Numbers")
.Range("C2") = "Максимум чисел (V2)=" 'Вывод на лист "Numbers" результаты вычисления с поясняющими надписями
.Range("D2") = Application.WorksheetFunction.Max(Sheets("Numbers").Range("A1:A10"))
.Range("C3") = "Минимум чисел (V2)="
.Range("D3") = Application.WorksheetFunction.Min(Sheets("Numbers").Range("A1:A10"))
.Range("C4") = "Среднее чисел (V2)="
.Range("D4") = Application.WorksheetFunction.Average(Sheets("Numbers").Range("A1:A10"))
.Range("C5") = "Произведение чисел (V2)="
.Range("D5") = Application.WorksheetFunction.Product(Sheets("Numbers").Range("A1:A10"))
End With
End Sub
Прикрепленные файлы:
5
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
давно
Модератор
137394
1850
22.03.2022, 21:26
общий
Адресаты:
Вот варианты, делал для собственного удовольствия. Не совсем по методичке. Данные задач вынесены в глобальные константы. Немного по другому организованы циклы.
Прикрепленные файлы:
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
давно
Посетитель
405402
99
23.03.2022, 09:34
общий
Адресаты:
Доброе утро! Спасибо за дополнительные варианты данной лабы ) я вот сейчас готовлюсь к защите и смотрю по первому файлу, который вы кидали 21.03 и насовсем понимаю, зачем нужен calculation v2? Просто смотрю он делает тоже самое, что и v1 и без понятия зачем v2, хехе)
давно
Посетитель
405402
99
23.03.2022, 09:35
общий
Тот же sum ver 2 в чем его прикол?)
давно
Посетитель
405402
99
23.03.2022, 10:02
общий
Смотрю тут ток меняет v1 на v2 в скобках, но зачем вторая v2?)
давно
Модератор
137394
1850
23.03.2022, 10:13
общий
Цитата: Danila
он делает тоже самое, что и v1 и без понятия зачем v2, хехе)
Я то тут при чем, спрашивайте у методички. Там работают две разные процедурочки, поэтому написал V1 и V2, чтобы отличать, какая процедура отработала. Они, естественно, дают одинаковый результат.

Кстати, в коде в паре процедур допустил неаккуратность, которая никак не сказывается на работе, но выглядит некрасиво:
Код:

Public Sub Вычисления_4_3_V2()
With Sheets("Numbers")
.Range("C2") = "Максимум чисел (V2)=" 'Вывод на лист "Numbers" результаты вычисления с поясняющими надписями
.Range("D2") = Application.WorksheetFunction.Max(Sheets("Numbers").Range("A1:A10"))
.Range("C3") = "Минимум чисел (V2)="
.Range("D3") = Application.WorksheetFunction.Min(Sheets("Numbers").Range("A1:A10"))
.Range("C4") = "Среднее чисел (V2)="
.Range("D4") = Application.WorksheetFunction.Average(Sheets("Numbers").Range("A1:A10"))
.Range("C5") = "Произведение чисел (V2)="
.Range("D5") = Application.WorksheetFunction.Product(Sheets("Numbers").Range("A1:A10"))
End With
End Sub
Там и так Sheets("Numbers") уже под With, он здесь избыточен. Где-то еще в коде было такое же. Имейте ввиду.
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
давно
Посетитель
405402
99
23.03.2022, 10:20
общий
Цитата: Megaloman
Там и так Sheets("Numbers") уже под With, он здесь избыточен. Где-то еще в коде было такое же. Имейте ввиду
понял, принял, спасибо, вроде готов к защите ;)
давно
Посетитель
405402
99
08.06.2022, 17:05
общий
Адресаты:
Здравствуйте! Уважаемый Megaloman, Вы завтра случайно не заняты в 9:00 по МСК? Если вкратце, то у меня завтра последний экзамен 10 из 10 и он будет по VBA и наш препод такая упрямая, что скажет у кого автомат ток завтра, у меня по сути есть неплохие шансы на него (т.к одни 8 по 10 бальной шкале) НО кто знает, может мне придется все же его написать :((( и в таком случае, если Вы завтра не заняты в это время, то мне бы ооочень понадобилась ваше помощь в последний раз Поэтому прошу, если Вас не затруднит в какой соц.сети можно было бы с Вами связаться, я просто скину свои данные и уже Вы мне напишите, чтоб другие Вам не спамили, просто на сайте будет не удобно с Вами консультироваться (((
давно
Посетитель
405402
99
09.06.2022, 20:18
общий
Адресаты:
Цитата: Danila
Вы завтра случайно не заняты в 9:00 по МСК? Если вкратце, то у меня завтра последний экзамен 10 из 10 и он будет по VBA и наш препод такая упрямая, что скажет у кого автомат ток завтра, у меня по сути есть неплохие шансы на него (т.к одни 8 по 10 бальной шкале) НО кто знает, может мне придется все же его написать :(((
Добрый вечер, хотел просто поблагодарить Вас еще раз за помощь с первыми 4 лабами, т.к благодаря Вам смог их защитить на 8 и уже последние 2 лабы (они там с word & access были связаны) я уже сам разобрался не спал тогда до утра, убил около 5 часов на них и тоже на 8 смог защитить) и сегодня я все же смог получить свой очередной автомат и был освобожден от вба и наконец закончил первый курс и вба закрыл с 8.00 поэтому огромнейшее Вам спасибо и всего доброго!!! ;)))
давно
Модератор
137394
1850
09.06.2022, 20:31
общий
Адресаты:
Рад за Вас. И особенно за то, что справились с заданиями самостоятельно. Успехов Вам в учебе и в дальнейшей карьере.
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
Форма ответа