vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest sobota, 18 maja 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

Wywołanie funkcji z dwoma parametrami


otwartyotwarty rozpoczął: kr postów: 9



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


Sortuj posty: z