Как выделить цветом информацию о товаре, цена которого наиболее близка к средней цене товара - 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