VBA . - :
[ ByVal | ByRef ] () As ,
ByVal - VBA - ,
ByRef - VBA - ,
.
, .. .
- .
, .
:
- ;
- ( );
- , .. , .. , .
m - 1 . , , , .
Function (ByRefy() As Integer, ByVal m As Byte)
Dim MnAs Integer
Dim k As Byte, j As Byte, L As Byte
For k = 1 To m - 1
Mn = y(k): L = k
For j = k + 1 To m
If y(j) <Mn Then
Mn = y(j): L = j
End if
Next j
y(L) = y(k): y(k) = Mn
Next k
EndFunction
< >, .
- ()
. ( ) , . m - 1 , .
Function (ByRefy() As Integer, ByVal m As Byte)
Dim d As Integer, k As Byte, j As Byte
For k = 2 To m
For j = m To k Step -1
If y(j-1) > y(j) Then
d = y(j-1): y(j-1) = y(j): y(j) = d
end if
Next j
Next k
End Function
.
, :
7. . .
Sub Ex7()
Dim x() As Integer, n As Byte, i As Byte
n = Application.CountA(ActiveSheet.Range(" A: A "))
ReDimx(1 To n)
For i = 1 To n
x(i) = Cells(i, 1).Value
Next i
Call (x, n)
|
|
MsgBox " = " &Format(x(m), " 0.000 ")
MsgBox " = " &Format(x(1), " 0.000 ")
EndSub
CountA() MS Excel () .
8. . , .
Sub Ex1()
Dim x() As Integer, As Integer, i As Integer, j As Integer
Const n As Byte = 10
ReDimx(1 To n)
Sheets(" 1 ").Select
Cells.Clear
For i = 1 To n
x(i) = Rnd * 100
Next i
For i = 1 To n
Cells(i, 1).Value = x(i)
Next i
Call (x, n)
For i = 1 To n
Cells(i, 2).Value = x(i)
Next i
= InputBox(" ")
If <x(1) Then
ReDim Preserve x(1 To n + 1)
For j = n To 1 Step -1
x(j + 1) = x(j)
Next j
x(1) =
End If
If >x(n) Then
ReDim Preserve x(1 To n + 1)
x(n + 1) =
Else
ReDim Preserve x(1 To n + 1)
i = 1
Do
If x(i) < = And < x(i + 1) Then
For j = n Toi + 1 Step -1
x(j + 1) = x(j)
Next j
x(i + 1) =
ExitDo
EndIf
i = i + 1
Loop Until i> n + 1
End If
For i = 1 To n + 1
Cells(i, 5) = x(i)
Nexti
EndSub