Пример 2 (ListBox)
End With
With Объект
<Операторы>
Например:
1)With ListBox1
.ColumnCount=3
.ColumnWidth=”20;30;30”
End With
2) With CommandButton1
.Caption=”OK”
.Visible=True
End With
Основным событием списка ListBox является событие Change, генерируемое при смене выбранного элемента.
Следующий пример демонстрирует работу со списком
Private Sub ListBox1_Change()
Select Case ListBox1.ListIndex
Case 0
Me.BackColor = vbYellow
Case 1
Me.BackColor = vbGreen
Case 2
Me.BackColor = vbRed
End Select
End Sub
Private Sub UserForm_Initialize()
ListBox1.AddItem "Желтый"
ListBox1.AddItem "Зеленый"
ListBox1.AddItem "Красный"
'ListBox1.ListIndex = 0
End Sub
В завершение разберем следующий пример:
Дана функция F(x)=2x-sin(x)-0,5.
Ø Найти корень уравнения на интервале [-1,1],
Ø вычислить значение на интервале [-1,1] с шагом =0,1 и
Ø построить график функции
Текст программного кода приведен ниже
Function f(x As Double) As Double
f = 2 * x - Sin(2 * x) - 0.25
End Function
Private Sub CommandButton1_Click()
Dim a As Double
Dim b As Double
Dim c As Double
Dim h As Double
Dim x As Double
Dim y As Double
a = CDbl(TextBox1.Text)
b = CDbl(TextBox2.Text)
h = CDbl(TextBox4.Text)
eps = 0.0001
If OptionButton1.Value = True Then
Do While Abs(b - a) > eps
c = (a + b) / 2
If f(a) * f(c) > 0 Then
a = c
Else
b = c
End If
Loop
c = (a + b) / 2
Label3.Caption = "Результат" & Chr(13) & _
"Значение корня = " & c
'TextBox3.Text = c
Label3.Visible = True
End If
If OptionButton2.Value = True Then
x = a: i = 0
Do While x <= b
y = f(x)
ListBox1.ColumnCount = 2
ListBox1.ColumnWidths = "30;40"
ListBox1.AddItem x
ListBox1.List(i, 1) = y
i = i + 1
x = x + h
Loop
ListBox1.Visible = True
Label4.Visible = True
End If
If OptionButton3.Value = True Then
x = a: i = 1
Do While x <= b
y = f(x)
Worksheets(2).Cells(i, 1) = x
Worksheets(2).Cells(i, 2) = y
i = i + 1
x = x + h
Loop
График
End If
End Sub
Private Sub CommandButton2_Click()
Hide
End Sub
Private Sub UserForm_Initialize()
TextBox1.Text = " "
TextBox2.Text = ""
TextBox4.Text = ""
TextBox1.SetFocus
End Sub
Sub График()
'
' График Макрос
' Макрос записан 28.05.2009 (Татьяна Донец)
'
'
i = 1
While Worksheets(2).Cells(i, 1) <> ""
i = i + 1
Wend
i = i - 2
Range("A1:B" & i).Select
Charts.Add
ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
ActiveChart.SetSourceData Source:=Sheets("Лист2").Range("A1:B" & i), PlotBy:= _
xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:="Лист2"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "График функции"
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
End Sub