konto usunięte

Temat: czy procedura zwraca wartość

Witam,

Jak sprawdzić czy procedura zwróciła wartość.

Procedura werfikuj wyświetla okna informujące o bledzie (w MsgBox). Jeżeli pojawi się chodź jedno z nich to procedura jajo powinna się kończyć. Jak skorygować procedurę jajo?

Sub jajo()

If Call werfukuj Then
Exit Sub
Else Call oblicz

End Sub

konto usunięte

Temat: czy procedura zwraca wartość

Sprawdzając kod krokowo/ step into/... F8

konto usunięte

Temat: czy procedura zwraca wartość

Procedury nie zwracają wartości. Użyj funkcji zamiast procedury.

Poniżej kod, który zadziała, ale tylko jeśli weryfikuj będzie funkcją, a nie procedurą:
If weryfikuj Then
Exit Sub
Else: Call oblicz
End If

Wyrzucony jest Call z pierwszej linii warunku oraz dodane zamknięcie warunku (End If).

konto usunięte

Temat: czy procedura zwraca wartość

Paweł Kiraga:
Procedury nie zwracają wartości.


A czy nie jest tak, że każda funkcja jest procedurą ale nie każda procedura jest funkcją.
Przecież możemy napisać procedurę, której wynikiem będzie wyświetlenie okna komunikatu i możemy napisać funkcję, która również zwróci komunikat.
Mariusz Jankowski

Mariusz Jankowski Programista
Excel/VBA

Temat: czy procedura zwraca wartość

Łukasz Bawik:
Paweł Kiraga:
Procedury nie zwracają wartości.


A czy nie jest tak, że każda funkcja jest procedurą

Nie jest. Procedura to inaczej makro, które rozpoczyna się poleceniem Sub i nie zwraca w wyniku żadnej wartości. Funkcja to inna para kaloszy - zawsze musi zwrócić jakąś wartość w wyniku.
Przecież możemy napisać procedurę, której wynikiem będzie wyświetlenie okna komunikatu

Ale to nie będzie wynik. Wynikiem jest zawsze wartość konkretnego typu, którą można wyświetlić w komórce arkusza. Msgbox jak najbardziej można wyświetlić na końcu działania makra, ale jest to operacja, nie można mówić, że to jest wynik.
i możemy napisać funkcję, która również zwróci komunikat.

Tak. Możemy pisać funkcje z dwóch różnych powodów. Po pierwsze, chcemy z nich korzystać w komórkach arkusza. Po drugie, chcemy je wywoływać w swoich makrach (częstszy powód).Mariusz Jankowski edytował(a) ten post dnia 23.02.12 o godzinie 23:06

Temat: czy procedura zwraca wartość

Moim zdaniem:
każda funkcja jest procedurą.

Rozróżnia się tylko procedury :
zwracające wynik, obliczenie --> jest to procedura typu Function
procedury nie zwracające wyniku --> procedura typu Sub

Oczywiście żeby nie rozwlekać się przy mówieniu, tłumaczeniu (jak powiada pewien wykładowca od programowania - programiści są pracowici inaczej :D ), skraca się formę : "procedura typu function" na Funkcja, "procedura typu Sub" na Procedura

p.s.

Niektórzy programiści C skracają do słowa Funkcja i mówią:
"Funkcja nie zwracająca wartości" na Procedurę typu void (odpowiednik Sub dla vb)
Mariusz Jankowski

Mariusz Jankowski Programista
Excel/VBA

Temat: czy procedura zwraca wartość

Zbyszek, wygląda na to, że masz rację. Ja cały czas uważałem, że procedura = makro, a funkcja = funkcja :-). Temat ten też wałkowaliśmy na Excelforum.

konto usunięte

Temat: czy procedura zwraca wartość

Jak skorygować funkcję WERFIKACJA aby miała wartość True gdy chodź jeden raz pojawi się jakiś komunikat MsgBox.

Private Sub CB_obliccz_Click()
If WERFIKACJA = True Then
Exit Sub
Else
If DTP_zaw_um.Value < "2012-02-10" Then
Call olicz_miesiace
Else
Call olicz_dni
End If
End If
End Sub

Public Function WERFIKACJA() As Boolean
Dim data As Date

data = "2010-04-03"
If DTP_opl_skl.Value <= data Then
MsgBox "xxx", vbOKOnly + vbExclamation, "WYNIK WERFIKCAJI"
End If
If DTP_opl_skl.Value <= DTP_zaw_um Then
MsgBox "yyy", vbOKOnly + vbExclamation, "WYNIK WERFIKCAJI"
End If

End Function
Filip Svetozarov

Filip Svetozarov Trener umiejętności

Temat: czy procedura zwraca wartość

Nie widzę byś gdziekolwiek przypisywał wartość do funkcji. Jeśli chcesz by funkcja zwracała TRUE wtedy gdy pojawi się msgbox to wewnątrz instrukcji IF ( w obu przypadkach ) dopisz:
WERIFIKACJA = trueFilip Svetozarov edytował(a) ten post dnia 27.02.12 o godzinie 17:17



Wyślij zaproszenie do