Visual Basic for Applications, , . VBA , BASIC, 60-.
BASIC , , , . BASIC . GWBASIC Microsoft . MS DOS 5- . IBM BASIC, .
BASIC . , BASIC. , , Pascal, C C++.
80- Microsoft BASIC, QuickBASIC MS DOS, 6- ( Windows 95).
QuickBasic 1992 Microsoft Visual Basic for Windows.
VBA Visual Basic for Windows, . , VBA , .
, Microsoft , , VBA , .
3.3.2 VBA.
, Excel , VBA. . , , , . VBA , .
, Excel , . , Excel . VBA, , .
, - . , - , , .
VBA - , , .
|
|
, , Excel. , . . VBA, , , . .
, VBA. , . - VBA.
, VBA , .
, Excel, , , , , .
, , , , - , , . VBA .
, VBA , , , OLE.
3.3.3. , .
VBA . : (, , . Excel ( ) . , , , . , .
.xls, VBA, VBA: . :
Modul1
1) Nzv n* 1* n1
2) P1 1 C7:C16 ( )
3) ( 17) (K7)
.
|
|
Modul2
1) N1 n1
2)
1, 2, 3 .
.
1) Nzv n* 1* n1*
n* 2.
. 1* n1*. . . (. 2) 0.975<1* =<1 0<n1*.<0.0075 n* = 0.005, 0.925<1* =<0.975 0<n1*.<0.0075 n* = 0.005 b .. .
Public Function Nzv(Pzv As Double, n1zv As Double)
Dim znach As Double
If Pzv <= 1 And Pzv > 0.975 Then
Select Case n1zv
Case 0 To 0.0075
znach = 0.005
Case 0.0075 To 0.0175
znach = 0.009
Case 0.0175 To 0.0275
znach = 0.02
Case 0.0275 To 0.0375
znach = 0.03
Case 0.0375 To 0.0475
znach = 0.04
Case 0.0475 To 0.055
znach = 0.05
Case 0.055 To 0.065
znach = 0.06
Case 0.07 To 0.09
znach = 0.08
Case 0.09 To 0.125
znach = 0.09
Case 0.125 To 0.175
znach = 0.14
Case 0.175 To 0.225
znach = 0.19
Case 0.225 To 0.275
znach = 0.24
Case 0.275 To 0.325
znach = 0.29
Case 0.325 To 0.375
znach = 0.33
Case 0.375 To 0.425
znach = 0.38
Case 0.425 To 0.475
znach = 0.43
Case 0.475 To 0.525
znach = 0.48
Case 0.525 To 0.575
znach = 0.52
Case 0.575 To 0.625
znach = 0.57
Case 0.625 To 0.675
znach = 0.62
Case 0.675 To 0.725
znach = 0.66
Case 0.725 To 0.775
znach = 0.71
Case 0.775 To 0.825
znach = 0.76
Case 0.825 To 0.875
znach = 0.8
Case 0.875 To 0.99
znach = 0.85
Case Is > 0.99
znach = 0.95
End Select
End If
If Pzv <= 0.975 And Pzv > 0.925 Then
Select Case n1zv
Case 0 To 0.0075
znach = 0.005
Case 0.0075 To 0.0175
znach = 0.011
Case 0.0175 To 0.0275
znach = 0.02
Case 0.0275 To 0.0375
znach = 0.03
Case 0.0375 To 0.0475
znach = 0.04
Case 0.0475 To 0.055
znach = 0.05
Case 0.055 To 0.065
znach = 0.06
Case 0.07 To 0.09
znach = 0.08
Case 0.09 To 0.125
znach = 0.1
Case 0.125 To 0.175
znach = 0.16
Case 0.175 To 0.225
znach = 0.21
Case 0.225 To 0.275
znach = 0.26
Case 0.275 To 0.325
znach = 0.32
Case 0.325 To 0.375
znach = 0.37
Case 0.375 To 0.425
znach = 0.42
Case 0.425 To 0.475
znach = 0.47
Case 0.475 To 0.525
znach = 0.53
Case 0.525 To 0.575
znach = 0.57
Case 0.575 To 0.625
znach = 0.63
Case 0.625 To 0.675
znach = 0.68
Case 0.675 To 0.725
znach = 0.73
Case 0.725 To 0.775
znach = 0.78
Case 0.775 To 0.825
znach = 0.83
Case 0.825 To 0.875
znach = 0.88
Case 0.875 To 0.99
znach = 0.92
Case Is > 0.99
znach = 1
End Select
End If
If Pzv <= 0.1 And Pzv > 0.175 Then
Select Case n1zv
Case 0 To 0.0075
znach = 0.34
Case 0.0075 To 0.0175
znach = 0.52
Case 0.0175 To 0.0275
znach = 0.71
Case 0.0275 To 0.0375
znach = 0.81
Case 0.0375 To 0.0475
znach = 0.86
Case 0.0475 To 0.055
znach = 0.9
Case 0.055 To 0.065
znach = 0.92
Case 0.07 To 0.09
znach = 0.94
Case 0.09 To 0.125
znach = 0.95
Case 0.125 To 0.175
znach = 1
Case 0.175 To 0.225
znach = 1
Case 0.225 To 0.275
znach = 1
Case 0.275 To 0.325
znach = 1
Case 0.325 To 0.375
znach = 1
Case 0.375 To 0.425
znach = 1
Case 0.425 To 0.475
znach = 1
|
|
Case 0.475 To 0.525
znach = 1
Case 0.525 To 0.575
znach = 1
Case 0.575 To 0.625
znach = 1
Case 0.625 To 0.675
znach = 1
Case 0.675 To 0.725
znach = 1
Case 0.725 To 0.775
znach = 1
Case 0.775 To 0.825
znach = 1
Case 0.825 To 0.875
znach = 1
Case 0.875 To 0.99
znach = 1
Case Is > 0.99
znach = 1
End Select
End If
Nzv = znach
End Function
:
If Then
, If N>=0 and N<=9 Then Print Ok
Dim As
Select Case
.
Select Case
Case
1
.
.
.
Case......
n-1
End Select
:
DoublePrecision #. 16 300 . , . .
2) ( 17) (K7)
, , .
:
Public Function ( As Double, N As Double)
Dim km As Double
If >= 0.1 And < 0.125 Then
Select Case N
Case 4
km = 3
Case 5
km = 3.23
Case 6
km = 3.04
Case 7
km = 2.88
Case 8
km = 2.72
Case 9
km = 2.56
Case 10 To 11
km = 2.42
Case 11 To 14
km = 2.24
Case 14 To 18
km = 1.99
Case 18 To 23
km = 1.84
Case 23 To 28
km = 1.71
Case 28 To 35
km = 1.62
Case 35 To 45
km = 1.5
Case 45 To 55
km = 1.4
Case 55 To 80
km = 1.32
Case 80 To 120
km = 1.21
Case 120 To 180
km = 1.17
Case 180 To 200
km = 1.15
Case Is > 200
km = 1
End Select
End If
..
..
If >= 0.75 And < 0.85 Then
Select Case N
Case 4
km = 1.14
Case 5
km = 1.12
Case 6
km = 1.1
Case 7
km = 1.09
Case 8
km = 1.08
Case 9
km = 1.08
Case 10 To 11
km = 1.07
Case 11 To 14
km = 1.07
Case 14 To 18
km = 1.07
Case 18 To 23
km = 1.06
Case 23 To 28
km = 1.06
Case 28 To 35
km = 1.05
Case 35 To 45
km = 1.05
Case 45 To 55
km = 1.04
Case 55 To 80
km = 1.03
Case 80 To 120
km = 1.02
Case 120 To 180
km = 1.02
Case 180 To 200
km = 1.01
Case Is > 200
km = 1
End Select
End If
If >= 0.85 And <= 0.9 Then
km = 1
End If
= km
End Function
.
3) P1 1 C7:C16 ( )
P1 2
C7:C16, ,
Public Function P1( As Range)
Dim Cell As Object
Dim m As Double, N As Double
m = 0
N = 0
For Each Cell In
If Cell.Value > m Then m = Cell.Value
Next Cell
For Each Cell In
If Cell.Value >= m / 2 Then N = N + Cell.Value
Next Cell
P1 = N
|
|
End Function
.
For Each ( ), . VB .
For Each In
..........................................
Exit For
..........................................
Next
Cell .
4) N1 n1
n1 (. 2). . . Offset.
Public Function N1(1 As Range)
Dim Cell1 As Object, w As Double, q As Double
w = 0
q = 0
For Each Cell1 In 1
If Cell1.Value > w Then w = Cell1.Value
Next Cell1
For Each Cell1 In 1
If Cell1.Value >= w / 2 Then q = q + Cell1.Offset(0, -1).Value
Next Cell1
N1 = q
End Function
Offset Cells, , . 1 , Cells. Offset .
4)
, .
.
Public Sub ()
Dim Cell1 As Object, Cell2 As Object
Dim Cell3 As Object, Cell4 As Object
For Each Cell1 In Range("A7:A16")
For Each Cell2 In Range("A30:A89")
If Cell1.Value = Cell2.Value Then
Cell1.Offset(0, 2).Value = Cell2.Offset(0, 1).Value
Cell1.Offset(0, 4).Value = Cell2.Offset(0, 2).Value
Cell1.Offset(0, 5).Value = Cell2.Offset(0, 3).Value
End If
Next Cell2
Next Cell1
For Each Cell3 In Range("A19:A23")
For Each Cell4 In Range("A30:A89")
If Cell3.Value = Cell4.Value Then
Cell3.Offset(0, 2).Value = Cell4.Offset(0, 1).Value
Cell3.Offset(0, 4).Value = Cell4.Offset(0, 2).Value
Cell3.Offset(0, 5).Value = Cell4.Offset(0, 3).Value
End If
Next Cell4
Next Cell3
End Sub