kody vba cz 3

Średnia arytmetyczna liczb w wybranym zakresie

Sub Sr()

Dim i As Byte, j As Byte, nw As Byte, nk As Byte, Suma As Integer

nw = Selection.Row

nk = Selection.Column

Suma = 0

For i = 1 To Selection.Rows.Count

For j = 1 To Selection.Columns.Count

Suma = Suma + Cells(nw + i - 1, nk + j - 1).Value

Next

Next

MsgBox ("Średnia arytmetyczna = " & Suma / Selection.Cells.Count)

End Sub

Wypełnianie zaznaczonego obszaru jako macierz:

Sub macierz_10x10()

Dim x As Byte, y As Byte, nw As Byte, nk As Byte

Randomize

nw=ActiveCell.Row: nk = ActiveCell.Column

For x = 1 To 10

For y = 1 To 10

Cells(nw + x - 1, nk + y - 1).Value = Int(100 * RND + 1)

Next

Next

End Sub

Kończenie programu wtedy gdy wpiszę 0 do msgboxa

Sub a()

Dim x As Byte

petla: x = InputBox("Podaj liczbę:")

If x <> 0 Then

GoTo petla

Else

MsgBox ("Koniec programu!")

End If

End Sub

Wpisuje ile mam wierszy w zaznaczonym zakresie

Function przyklad(zakres As Variant) As String

Dim tablica As Range

If IsArray(zakres) Then

Set tablica = zakres

przyklad ="Liczba wierszy: " & tablica.rows.count

End If

End Function

Oblicza silnie z wpisanej liczby

Function silnik(n As Byte) As Long

'silnia metodą iteracji

Dim i As Byte

i = 1

silnik = 1

Do Until i > n

silnik = silnik * i

i = i + 1

Loop

End Function

To samo

Function silnik2(n As Byte) As Long

'silnia rekurencyjnie

If n = 0 Then

silnik2 = 1

Else

silnik2 = n * silnik2(n - 1)

End If

End Function

Obliczanie silni

Function siln(wartosc As Integer)

wartosc = wartosc - 1

If wartosc = 0 Then

siln = 1

Exit Function

End If

siln = (wartosc + 1) * siln(wartosc)

End Function

Function Ile_parzystych(zakres As Range) 'zadanie 3

Dim komorka, sum As Integer

Dim n As Long

n = 2

For Each komorka In zakres

If Not IsEmpty(komorka) Then

If IsNumeric(komorka) Then

If komorka.Value Mod n = 0 Then sum = sum + 1

Else

Ile_parzystych = "Liczba!"

Exit Function

End If

Else

Ile_parzystych = "Puste komorki!!"

Exit Function

End If

Next

Ile_parzystych = sum

End Function

*********

Sub losowe() 'zadanie 2

Dim n As Long

n = InputBox("Podaj n, z zakresu od 1 do 100")

Cells(ActiveCell.Row, ActiveCell.Column).Value = Int(Rnd * 100)

msg = MsgBox("Czy liczymy dalej?", vbQuestion + vbYesNo, "decyzja")

End Sub

Option Explicit

Sub silnia()

Dim n As Integer, iloczyn As Integer, i As Integer

n = InputBox("Podaj n:")

iloczyn = 1

For i = 1 To n

iloczyn = iloczyn * i

Next

MsgBox "Wynik mnożenia: " & iloczyn, vbInformation + vbOKOnly, "Informacja o wyniku"

End Sub

Sub sumowanie_naturalnych()

Dim n As Integer, Suma As Integer, i As Integer, decyzja As String

n = InputBox("Podaj n:")

Do

n = InputBox("Podaj n:")

Suma = 0

For i = 1 To n

Suma = Suma + i

Next

MsgBox "Wynik sumowania: " & Suma, vbInformation + vbOKOnly, "Informacja o wyniku"

decyzja = MsgBox("Czy chcesz liczyć dalej?", vbYesNoCancel + vbQuestion, "Pytanie")

Loop While decyzja = vbYes

End Sub

Sub suma_w_obszarze()

Dim i As Byte, j As Byte, nw As Byte, nk As Byte, Suma As Integer

nw = Selection.Row

nk = Selection.Column

Suma = 0

For i = 1 To Selection.Rows.Count

For j = 1 To Selection.Columns.Count

Suma = Suma + Cells(nw + i - 1, nk + j - 1).Value

Next

Next

'MsgBox ("Suma liczb = " & Suma)

Cells(nw + Selection.Rows.Count + 1, nk) = Suma

End Sub

Sub suma_w_obszarze_z_inputboxem()

Dim nw As Byte, nk As Byte, Suma As Integer, komorka, zakres As Range

Set zakres = Application.InputBox("Wprowadź zakres", "Zakres", , , , , , 8)

nw = zakres.Row

nk = zakres.Column

Suma = 0

For Each komorka In zakres

Suma = Suma + komorka

Next

Cells(nw + zakres.Rows.Count + 1, nk) = Suma End Sub

Sub wpisz_zero()

Dim nw As Byte, nk As Byte, i As Byte, x As Single

nw = ActiveCell.Row

nk = ActiveCell.Column

Do Until x = 0

x = InputBox("Podaj liczbę:")

Cells(nw + 1, nk) = x

i = i + 1

Loop Until x = 0

End Sub

Sub sumka()
Dim a1 As Byte
Dim a2 As Byte
Dim sum As Byte
a1 = Range("A1").Value ' wartość a1 jest pobierana z komórki A1
a2 = Range("B1").Value ' wartość a2 jest pobierana z komórki B1
sum = a1 + a2 ' obliczenie wartości zmiennej sum
Range("C1").Value = sum ' kopiowanie wartości zmiennej sum do komórki C1
End Sub

Sub sumka1()
Dim a1 As Byte
Dim a2 As Byte 'proszę zmieniać typ zadeklarowanych zmiennych i obserwować, co się dzieje
Dim sum As Byte

a1 = InputBox("Podaj wartość a1") ' wartość a1 jest pobierana za pomocą okna dialogowego InputBox
a2 = InputBox("Podaj wartość a2") ' wartość a2 jest pobierana za pomocą okna dialogowego InputBox
sum = a1 + a2 ' obliczenie wartości zmiennej sum
MsgBox (sum) ' wartość sum wyświetlona zostaje za pomocą okna dialogowego Message Box
' MsgBox "Obliczono sumę a1 i a2 = " & sum, vbInformation + vbYesNo, "SUMA"
End Sub

Sub silnik() 'iteracyjne obliczenie n!
Dim n As Byte, i As Byte, sil As Long
sil = 1 'początkowa wartość n!, wykorzystywana także gdy n=0
n = InputBox("Podaj n") ' wprowadzenie danej wejściowej
For i = 1 To n 'uruchomienie pętli For
sil = i * sil 'do wartości sil w każdym cyklu pętli domnażana jest kolejna liczba naturalna i
Next

MsgBox (n & "! = " & sil) 'wyświetlenie wyniku
End Sub

Sub sumapar() 'oblicanie sumy kolejnych liczb parzystych od m do n
Dim m As Integer, n As Integer, i As Integer, sum As Long

m = InputBox("Podaj m") ' wprowadzanie danych wejściowych
If m Mod 2 <> 0 Then ' jeśli n nie jest parzyste, to ...
MsgBox ("m musi być parzyste")
Else ' a w przeciwnym razie
n = InputBox("Podaj n")

For i = m To n Step 2 ' pętla ze skokiem 2
sum = sum + i
Next
MsgBox ("Suma liczb parzystych od " & m & " do " & n & " = " & sum)
End If
End Sub

Sub siedem() ' czy w zaznaczonym obszarze arkusza jest liczba podzielna przez 7
Dim komora ' zawartość komórki może być dowolnego typu, więc deklarujemy ją jako Variant
For Each komora In Selection 'pętla For ... Each
If komora.Value <> 0 Then 'Jeśli a nie jest zerem lub pustą komórką
If komora.Value Mod 7 = 0 Then 'Jeśli znajdujemy choć jedną liczbę podzielną przez 7
MsgBox ("Jest liczba podzielna przez 7") 'Wyświetlamy komunikat
Exit Sub 'i nie mamy już potrzeby szukać dalej, więc opuszczamy procedurę
End If 'szukamy dalej
End If
Next
MsgBox ("Nie ma liczb podzielnych przez 7")
End Sub

Sub pisz_siedem() 'odszukaj w zazn. obszarze liczby podzielne przez 7 i wypisz je pod tym obszarem
Dim komora, licznik As Byte
For Each komora In Selection
If komora.Value <> 0 Then
If komora.Value Mod 7 = 0 Then ' jeśli znaleziono liczbę podzielną przez 7
Cells(Selection.Row + Selection.Rows.Count, Selection.Column + licznik).Value = komora.Value 'wypisz ją pod obszarem
licznik = licznik + 1
End If
End If
Next
End Sub

Sub liczby() ' wprowadzanie liczb z InputBoxa do arkusza do momentu, gdy wpisze się zero
Dim licznik As Byte, liczba As Integer

Do 'otwieramy pętlę
liczba = InputBox("Podaj kolejną liczbę") 'wprowdzamy kolejną liczbę
Cells(ActiveCell.Row, ActiveCell.Column + licznik).Value = liczba 'wpisujemy liczbę do arkusza w wierszu od celi aktywnej
licznik = licznik + 1 'zwiększanie licznika pętli
Loop Until liczba = 0 ' warunek stopu

End Sub

Sub liczby1() ' wprowadzanie liczb z InputBoxa do arkusza do momentu, gdy wpisze się zero
'Jeśli zmienimy miejsce spradzenia warunku stopu program nie wypisze żadnej liczby - zastanów się dlaczego?
Dim licznik As Byte, liczba As Integer

Do Until liczba = 0 ' warunek stopu
liczba = InputBox("Podaj kolejną liczbę") 'wprowdzamy kolejną liczbę
Cells(ActiveCell.Row, ActiveCell.Column + licznik).Value = liczba 'wpisujemy liczbę do arkusza w wierszu od celi aktywnej
licznik = licznik + 1 'zwiększanie licznika pętli
Loop
End Sub

Sub powrót() 'oblicz wartość wielomianu w = x^3 - x^2 - 3 i zapytaj, czy kontynuować obliczenia
Dim msg As String, x As Integer

msg = vbYes 'domyślnie wciskamy przycisk TAK w MsgBox
Do Until msg = vbNo 'Pętla kręci się aż do mometu wciśnięcia przycisku NIE w MsgBoxie
x = InputBox("Podaj liczbę") 'wprowadź zmienną niezależną
msg = MsgBox("Wartość wielomianu = " & x ^ 3 - x ^ 2 - 3 & Chr(10) & Chr(13) & "Czy liczymy dalej?", _
vbQuestion + vbYesNo, "DECYZJA") 'wyliczenie wartości wielomianu i pytanie o kontynuację
Loop
MsgBox ("Koniec, dziękuję")
End Sub

'wyznacz n-ty wyraz ciągu Fibonacciego

Function Fibo(n As Byte) As Long

' metoda rekurencyjna, wprost z definicji ciągu Fibonacciego

If n = 1 Then

Fibo = 1

ElseIf n = 2 Then

Fibo = 1

Else

Fibo = Fibo(n - 1) + Fibo(n - 2) ' def: wyraz n-ty jest równy sumie 2 wyrazów poprzedzających

End If

End Function

'wyznacz n-ty wyraz ciągu Fibonacciego

Function Fibo1(n As Byte) As Long

'metoda iteracyjna

Dim x As Byte, y As Byte, z As Byte, i As Byte

x = 1 'pierwszy wyraz ciągu

y = 1 'drugi wyraz ciągu

i = 2 'indeks ciągu - aktualnie mamy policzony 2 wyraz

Do Until i > n

z = x + y 'liczymy kolejny wyraz

x = y 'przesuwamy się w górę ciągu - nowym wyrazem pierwszym staje się dawny wyraz drugi

y = z

i = i + 1 'zwiększamy indeks ciągu

Loop

Fibo1 = x

End Function

' wyznacz liczby komórek pustych, zawierających liczbę i zawierających tekst we wskazanym zakresie arkusza

Function komórki1(zakres As Range)

Dim kom(1 To 3) As Byte 'deklaracja wektora przechowującego liczby komórek każdego typu

Dim komora 'deklaracja zmiennej przechowującej stan komórki

For Each komora In zakres

If IsEmpty(komora) Then

kom(1) = kom(1) + 1

ElseIf IsNumeric(komora) Then

kom(2) = kom(2) + 1

Else

kom(3) = kom(3) + 1

End If

Next

komórki1 = kom

End Function

Zmienna typu Range odnosi się do obiektu stanowiącego zakres arkusza:

Function sumal(zakres As Range) As Integer

Dim komórka As Variant

sumal = 0

For Each komórka In zakres

sumal = komórka.Value + sumal

Next

End Function

’Funkcja spawdzająca, czy w zaznaczonych obszarach arkusza znajdują się liczby parzyste.

Function para(ParamArray zakresy()) As Boolean

Dim zakres, komórka

para = False

For Each zakres In zakresy()

For Each komórka In zakres

If komórka.value Mod 2 = 0 Then

para = True

Exit Function

End If

Next

Next

End Function

Sub PrzykładPętli()

Dim wiersz, kolumna As Integer

Range("A1", "J1").Interior.ColorIndex = 15

Range("A2", "A10").Interior.ColorIndex = 15

For wiersz = 1 To 10

For kolumna = 1 To 10

Cells(wiersz, kolumna) = wiersz * kolumna

Next kolumna

Next wiersz

End Sub

Sub poleHerona()
Dim a As Single, b As Single, c As Single, poleObw As Single, poleH As Single
a = InputBox("podaj a:")
b = InputBox("podaj b:")
c = InputBox("podaj c:")

If a > 0 And b > 0 And c > 0 Then
poleObw = (a + b + c) / 2
End If
MsgBox (poleObw)
poleH = Sqr(poleObw * (poleObw - a) * (poleObw - b) * (poleObw - c))
MsgBox (poleH)

End Sub


Wyszukiwarka

Podobne podstrony:
kody vba cz 1 zg
kody vba cz 2 zg
W2014 Cz I Liczby Kody Operacje - Grupy X Stac Niest, Dokumenty WAT Start 2014-20XX, programowanie
Kody do Gier na PSP cz 4
VBA Podstawy cz II
Kody do Gier na PSP cz 3
vba 2005 12 11 cz 2r2
Kody do Gier na PSP cz 2
Kody do Gier na PSP cz 3 cd
vba 2005 12 11 cz 2
VBA Podstawy cz I
Biol kom cz 1
Systemy Baz Danych (cz 1 2)
cukry cz 2 st
wykłady NA TRD (7) 2013 F cz`
JĘCZMIEŃ ZWYCZAJNY cz 4

więcej podobnych podstron