Как выделить цветом информацию о товаре, цена которого наиболее близка к средней цене товара - VB

Узнай цену своей работы

Формулировка задачи:

Прайс-лист на форме имеет названия и цены N товаров (N =10) Выделить цветом информацию о товаре, цена которого наиболее близка к средней цене товара.

Решение задачи: «Как выделить цветом информацию о товаре, цена которого наиболее близка к средней цене товара»

textual
Листинг программы
Option Explicit
 
Dim fra As Frame                ' Фрейм
Dim txt() As TextBox            ' Цены
Dim lbl() As Label              ' Надписи
Dim WithEvents btn As CommandButton        ' Кнопка расчета
 
Private Sub btn_Click()
    Dim i As Long, a As Double, n As Long
    For i = 0 To UBound(txt)
        If IsNumeric(txt(i)) Then
            a = a + CDbl(txt(i))    ' Находим сумму
        Else
            MsgBox "Ошибка": Exit Sub
        End If
        txt(i).ForeColor = vbBlack
    Next
    a = a / 10                  ' Находим среднее арифметическое
    lbl(10) = Format(a, "#0.00") ' Выводим среднее арифметическое
    For i = 1 To UBound(txt)    ' Начинаем со второго
        If Abs(a - CDbl(txt(i))) < Abs(a - CDbl(txt(n))) Then n = i
    Next
    txt(n).ForeColor = vbRed
End Sub
Private Sub Form_Load()
    Dim i As Long, s As Long
    Me.Width = 5000: Me.Height = 5000
    Set fra = Me.Controls.Add("VB.Frame", "fra", Me) ' Добавляем фрейм
    fra.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight: fra.Visible = True: fra.Caption = "Цены"
    ReDim txt(9): ReDim lbl(10) ' 10 предметов, 11 надписей
    s = (fra.Height - 400) / 10 ' Расстояние между предметами
    Randomize
    For i = 0 To 9
        Set lbl(i) = Me.Controls.Add("VB.Label", "lbl" & CStr(i), fra)
        Set txt(i) = Me.Controls.Add("VB.TextBox", "txt" & CStr(i), fra)
        lbl(i).Caption = Choose(i + 1, "Блокнот", "Тетрадь", "Ручка", "Карандаш", "Линейка", "Ластик", "Альбом", "Дневник", "Краски", "Пенал")
        lbl(i).Move 100, s * i + 300, 1000, 300: lbl(i).Visible = True
        txt(i).Text = Format(Rnd * 100, "#0.00")
        txt(i).Move lbl(i).Left + lbl(i).Width, s * i + 300, 1000, 300: txt(i).Visible = True
    Next
    Set btn = Me.Controls.Add("VB.CommandButton", "btn", fra) ' Добавляем кнопку
    Set lbl(10) = Me.Controls.Add("VB.Label", "lbl10", fra) ' Добавляем надпись среднего арифметического
    lbl(10).Move fra.Width - 2000, fra.Height - 1200, 1900, 400: lbl(10).Visible = True
    btn.Move fra.Width - 2000, fra.Height - 600, 1900, 400
    btn.Caption = "Расчет": btn.Visible = True
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы