You are on page 1of 6

Niektóre treści procedur w VBA dla MS Excel

Rozwiązanie równania liniowego + = 0:

Sub rozwiazanie_rownania_liniowego()
‘ rozwiazuje rownanie liniowe postaci ax+b=0 - podaje x po wprowadzeniu wspolczynnikow a i b
‘ autor: Piotr Urbanski
‘ wersja RC-1A
Dim x As Double ‘deklaracja zmiennej x jako Double
Dim a As Double ‘deklaracja wspolczynnika a jako Double
Dim b As Double ‘deklaracja wspolczynnika b jako Double
MsgBox ("program rozwiazuje rownanie liniowe ax+b=0 po wprowadzeniu wspolczynnikow a i b")
a = InputBox("wprowadz wartosc wspolczynnika a") ‘przypisanie wartosci wspolczynnika a
b = InputBox("wprowadz wartosc wspolczynnika b") ‘przypisanie wartosci wspolczynnika b
If a = 0 Then
If b = 0 Then
MsgBox ("rownanie tozsamosciowe")
Else
MsgBox ("brak rozwiazan")
End If
Else
x = (-(b / a))
MsgBox ("jedno rozwiazanie: " & x)
End If
End Sub
Rozwiązanie równania kwadratowego + + = 0:

Sub rozwiazanie_rownania_kwadratowego()
‘ rozwiazuje rownanie kwadratowe postaci ax^2+bx+c=0 - po wprowadzeniu wspolczynnikow a,b,c
‘ autor: Piotr Urbanski
‘ wersja RC-0
Dim xlin As Double ‘deklaracja zmiennej xlin jako Double
Dim x0 As Double ‘deklaracja zmiennej x0 jako Double
Dim x1 As Double ‘deklaracja zmiennej x1 jako Double
Dim x2 As Double ‘deklaracja zmiennej x2 jako Double
Dim a As Double ‘deklaracja wspolczynnika a jako Double
Dim b As Double ‘deklaracja wspolczynnika b jako Double
Dim c As Double ‘deklaracja wspolczynnika c jako Double
Dim delta As Double ‘deklaracja wyroznika trojmianu (delta) jako Double
MsgBox ("program rozwiazuje rownanie kwadratowe ax^2+bx+c=0 po wprowadzeniu wspolczynnikow
a,b,c")
a = InputBox("wprowadz wartosc wspolczynnika a") ‘przypisanie wartosci wspolczynnika a
b = InputBox("wprowadz wartosc wspolczynnika b") ‘przypisanie wartosci wspolczynnika b
c = InputBox("wprowadz wartosc wspolczynnika c") ‘przypisanie wartosci wspolczynnika c
If a = 0 Then
If b = 0 Then
If c = 0 Then
MsgBox ("rownanie tozsamosciowe")
Else
MsgBox ("brak rozwiazan")
End If
Else
xlin = (-(c / b))
MsgBox ("jedno rozwiazanie: " & xlin)
End If
Else
delta = ((b ^ 2) - (4 * a * c))
If delta = 0 Then
x0 = (-(b / (2 * a)))
MsgBox ("jedno rozwiazanie: " & x0)
Else
If delta > 0 Then
x1 = (((-b) - (Sqr(delta))) / (2 * a))
x2 = (((-b) + (Sqr(delta))) / (2 * a))
MsgBox ("dwa rozwiazania: " & x1 & " oraz " & x2)
Else
MsgBox ("brak rozwiazan")
End If
End If
End If
End Sub
Szacowanie wartości silni liczby ze wzoru Stirlinga ( ! ≈ √2 ∙ ):

Sub obliczanie_silni_ze_wzoru_Stirlinga()
‘ oblicza przyblizona wartosc silni liczby n (n<144) ze wzoru Stirlinga na n!
‘ autor: P.U.
‘ wersja B8
Const pi As Double = 3.14159265359 ‘deklaracja wartosci liczby pi
Const e As Double = 2.71828182846 ‘deklaracja wartosci liczby e
Dim n As Long ‘deklaracja zmiennej n jako Long
Dim ssw As Double ‘deklaracja zmiennej ssw jako Double
Dim ss As Double ‘deklaracja zmiennej ss jako Double
Dim ssdw As Double ‘deklaracja zmiennej ssdw jako Double
Dim ssd As Double ‘deklaracja zmiennej ssd jako Double
Dim alfan As Double ‘deklaracja zmiennej alfan jako Double
MsgBox ("program oblicza przyblizona wartosc silni liczby n ze wzoru Stirlinga na n!")
MsgBox ("niedokladnosc przyblizenia maleje ze wzrostem wartosci n, dla n>20 wynosi <0,5%")
MsgBox ("program dziala tylko dla liczb naturalnych mniejszych niz 144")
n = InputBox("wprowadz wartosc liczby n, ktorej silnia ma byc oszacowana")
If n < 0 Then
MsgBox ("wprowadzono liczbe ujemna - wartosc silni niezdefiniowana")
Else
If n = 0 Then
MsgBox ("wartosc silni: 1 (z definicji)")
Else
If n > 143 Then
MsgBox ("podano zbyt duza wartosc n - powyzej 143 - przepelnienie pamieci")
Else
ssw = ((Sqr(2 * pi * n)) * ((n ^ n) / (Exp(n))))
ss = Int(ssw)
‘ MsgBox ("przyblizona wartosc silni liczby n: " & ss)
‘ MsgBox ("czy chcesz uzyc dodatkowej procedury zwiekszajacej dokladnosc
oszacowania?" & vbYesNo)
alfan = (1 / ((12 * n) + (Rnd())))
ssdw = (ss * (Exp(alfan)))
ssd = Int(ssdw)
MsgBox ("przyblizona wartosc silni liczby n: " & ssd)
End If
End If
End If
End Sub
Obliczanie wartości silni liczny :

Sub obliczanie_wartosci_silni()
‘ oblicza iteracyjnie wartosc silni liczby n (n<13)
‘ autor: P.U.
‘ wersja B4A
Dim n As Long ‘deklaracja zmiennej n jako Long
Dim nx As Long ‘deklaracja zmiennej nx jako Long
Dim i As Long ‘deklaracja zmiennej i jako Double
Dim silnia As Long ‘deklaracja zmiennej silnia jako Double
MsgBox ("program oblicza iteracyjnie wartosc silni liczby n")
MsgBox ("program działa tylko dla liczb naturalnych mniejszych niz 13")
n = InputBox("wprowadz wartosc liczby n, ktorej silnia ma byc obliczona")
nx = n
If n < 0 Then
MsgBox ("wprowadzono liczbe ujemna - wartosc silni niezdefiniowana")
Else
If n = 0 Then
silnia = 1
MsgBox ("wartosc silni: " & silnia & " (z definicji)")
Else
If n > 12 Then
MsgBox ("podano zbyt duza wartosc n - powyzej 12 - przepelnienie pamieci")
Else
i = nx
While nx <> 1
nx = (nx - 1)
i = (i * nx)
Wend
silnia = i
MsgBox ("obliczona wartosc silni liczby n: " & silnia)
End If
End If
End If
End Sub
Obliczanie lub szacowanie wartości silni liczby :

Sub obliczanie_lub_szacowanie_wartosci_silni()
‘ oblicza iteracyjnie lub oszacowuje (ze wzoru Stirlinga) wartosc silni liczby n (n<144)
‘ autor: Piotr Urbanski
‘ wersja A4B
Const pi As Double = 3.14159265359 ‘deklaracja wartosci liczby pi
Const e As Double = 2.71828182846 ‘deklaracja wartosci liczby e
Dim n As Long ‘deklaracja zmiennej n jako Long
Dim nx As Long ‘deklaracja zmiennej nx jako Long
Dim i As Long ‘deklaracja zmiennej i jako Double
Dim silnia As Long ‘deklaracja zmiennej silnia jako Double
Dim ssw As Double ‘deklaracja zmiennej ssw jako Double
Dim ss As Double ‘deklaracja zmiennej ss jako Double
Dim ssdw As Double ‘deklaracja zmiennej ssdw jako Double
Dim ssd As Double ‘deklaracja zmiennej ssd jako Double
Dim alfan As Double ‘deklaracja zmiennej alfan jako Double
MsgBox ("program oblicza iteracyjnie lub oszacowuje (ze wzoru Stirlinga) wartosc n!")
MsgBox ("program dziala tylko dla liczb naturalnych mniejszych niz 144")
MsgBox ("przy oszacowaniu niedokladnosc maleje ze wzrostem n, dla n>20 spada wynosi <0,5%")
n = InputBox("wprowadz wartosc liczby n, ktorej silnia ma byc obliczona lub oszacowana")
nx = n
If n < 0 Then
MsgBox ("wprowadzono liczbe ujemna - wartosc silni niezdefiniowana")
Else
If n = 0 Then
silnia = 1
MsgBox ("wartosc silni: " & silnia & " (z definicji)")
Else
If n > 12 Then
If n > 143 Then
MsgBox ("podano zbyt duza wartosc n - powyzej 143 - przepelnienie pamieci")
Else
ssw = ((Sqr(2 * pi * n)) * ((n ^ n) / (Exp(n))))
ss = Int(ssw)
' MsgBox ("przyblizona wartosc silni liczby n: " & ss)
' MsgBox ("czy chcesz uzyc dodatkowej procedury zwiekszajacej dokladnosc
oszacowania?" & vbYesNo)
alfan = (1 / ((12 * n) + (Rnd())))
ssdw = (ss * (Exp(alfan)))
ssd = Int(ssdw)
MsgBox ("przyblizona wartosc silni liczby n: " & ssd)
End If
Else
i = nx
While nx <> 1
nx = (nx - 1)
i = (i * nx)
Wend
silnia = i
MsgBox ("obliczona wartosc silni liczby n: " & silnia)
End If
End If
End If
End Sub
Inne procedury:
Inne procedury:

You might also like