napisał: kr postów: 7
umieszczony: 22 października 2005 09:41
|
|
Dziękuję za wszystkie porady.
Myślę, że to mi całkowicie wystarczy.
Karol |
|
napisał: Stanislaw postów: 109
umieszczony: 21 października 2005 22:13
|
|
> Funkcję możesz wywołać z wieloma parametrami w nawiasach okrągłych,
> natomiast procedurę tylko z jednym. W procedurze wieloparametrowej nie używa się nawiasów.
Jednak nie zgodziłbym się do końca z powyższym stwierdzeniem.
Również procedurę można wywołać z wieloma parametrami w nawiasach okrągłych,
należy tylko wtedy posłużyć się słowem kluczowym Call.
Np.
wywołanie procedury "Wysokość_wierszy" bez nawiasów:
Wysokość_wierszy wys_1_wiersz, wys_2_wiersz, wys_3_wiersz
oraz z nawiasami wykorzystując Call
Call Wysokość_wierszy(wys_1_wiersz, wys_2_wiersz, wys_3_wiersz)
--
Pozdrawiam
Stanislaw |
|
napisał: Rycho postów: 291
umieszczony: 21 października 2005 21:38
|
|
Sorki, że piszę tak na raty.
IMHO nie odróżniasz funkcji od procedury.
Funkcja powinna zawierać w swoim ciele podstawienie wartości zwracanej.
Nazwa_funkci = "coś tam"
Onaczej jest to zwykła procedura Sub i tak jest traktowana.
Funkcję możesz wywołać z wieloma parametrami w nawiasach okrągłych, natomiast procedurę tylko z jednym. W procedurze wieloparametrowej nie używa się nawiasów.
Dla "prawdziwej" funkcji taki kod zadziała:
Function funkcja2(x, y) As String
MsgBox x
MsgBox y
funkcja2 = x & y
End Function
Sub Makro()
y = funkcja2("pierwszy", "drugi")
End Sub
Rycho |
|
napisał: Rycho postów: 291
umieszczony: 21 października 2005 21:21
|
|
Wywołaj funkcję bez nawiasów.
funkcja2 "pierwszy", "drugi"
Rycho |
|
napisał: Rycho postów: 291
umieszczony: 21 października 2005 21:16
|
|
Witaj.
Żadna funkcja wywołana z arkusza (użyta w formule) nie może zmieniać obiektów excela ( w tym np. formatowania danej komórki lub wartości w innych komórkach). Może to zrobić jedynie procedura. Takie są zasady w excelu.
Rycho |
|
napisał: kr postów: 7
umieszczony: 21 października 2005 21:12
|
|
Może jeszcze inaczej
Dlaczego takie coś działa?
Function funkcja1(x)
MsgBox x
End Function
uruchomienie:
Sub Makro()
funkcja1 ("pierwszy")
End Sub
A coś takiego już nie?
Function funkcja2(x, y)
MsgBox x
MsgBox y
End Function
Uruchomienie:
Sub Makro()
funkcja2 ("pierwszy", "drugi")
End Sub
Mam nadzieję, że tym razem jasno wytłumaczyłem o co mi chdzi.
Przepraszam za byćmoże głupie pytania, ale robię czasami bardzo skomplikowane rzeczy i jakoś to działa, a na tych prostych się gubię :( |
|
napisał: kr postów: 7
umieszczony: 21 października 2005 20:52
|
|
Dziękuję za zainteresowanie
Może zapytam inaczej
Ja próbowałem zrobić coś w tym stylu:
[vbcode]
Function Dodawanie(par1, par2)
MsgBox par1 + par2
End Function
a wywołanie
[vbcode]
Sub Makro()
Dodawanie(1, 2)
End Sub
[/vbcode]
Ale to już nie przejdzie :(
Dlaczego tak?
bo u mnie funkcja nie ma nic liczyć, a jedynie zmieniać kolor właściwych wierszy we właściwym arkuszu (to te dwa parametry przekazywane)
Pozdrowionak Karol
Administracja serwisu prosi o poprawienie znaczników [vbcode] |
|
napisał: Stanislaw postów: 109
umieszczony: 21 października 2005 18:41
|
|
Witaj Karol,
Bardzo oszczędnie opisałeś problem.
Przykład najprostszej fumkcji użytkownika:
Function Dodawanie(par1, par2)
Dodawanie = par1 + par2
End Function
Możesz ją użyć w arkuszu podobnie jak inne funkcje wbudowane,
lub wywołać w edytorze VBA, np. tak:
Sub Makro()
MsgBox Dodawanie(1, 2)
End Sub
--
Stanislaw |
|
napisał: kr postów: 7
umieszczony: 21 października 2005 17:34
|
|
Witam.
Jak większość mam problem
Chciałem trochę uporządkować kod i pomyślałem, że najlepiej będzie wpakować niektóre fragmenty do funkcji.
Niestety mam problem w memencie gdy chciałym przekazać wiecej niż jeden parametr.
to znaczy:
funkcja (par)
jest ok
natomiast:
funkcja (par1, par2)
generuje błąd:
Expect:=
O co w tym chodzi?
Przepraszam, za lamerskie pytania, ale od dopieroco zacząłem z VBA
Pozdrawiam Karol |
|
 wstecz 1 dalej  wszystkich stron: 1
|