Denis Grenda

Denis Grenda Student pierwszego
roku studiów
magisterkich
matematyki w...

Temat: Funkcja w VBA

Cześć, piszę funkcje, która zamienia kropkę na przecinek.
Napisałem takie coś:
Public Function kropkaNaprzecinek(liczba_wejsciowa As String) As Double

kropkaNaprzecinek = CDbl (Replace (liczba_wejsciowa, " . " , " , "))

End Function

To działa, jednak chciałem pobawić się warunkami, no i tutaj w przypadku, gdy przecinek występuje funkcja nie działa.
Public Function kropkaNaprzecinek(liczba_wejsciowa As String) As Double
If InStr(liczba_wejsciowa, " . ", 1) = 0 Then
kropkaNaprzecinek = CDbl(liczba_wejsciowa)
Else
kropkaNaprzecinek = CDbl(Replace(liczba_wejsciowa, " . " , " , " ))
End If
End Function

Co jest nie tak?

Edit:
Istnieje opcja zobaczenia kodu gotowych funkcji takich jak SUMA itd?Ten post został edytowany przez Autora dnia 22.03.17 o godzinie 21:33
Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: Funkcja w VBA

Coś poknociłeś z warunkiem:
Public Function kropkaNaprzecinek(liczba_wejsciowa As String) As Double
If InStr(1, liczba_wejsciowa, ".") = 0 Then
kropkaNaprzecinek = CDbl(liczba_wejsciowa)
Else
kropkaNaprzecinek = CDbl(Replace(liczba_wejsciowa, ".", ","))
End If
End Function

Zobacz też jak działa konwersja na currency:
CCur(liczba_wejsciowa)
Damian Zurawski

Damian Zurawski Data Engineer w
Grupie Żywiec

Temat: Funkcja w VBA

Hej,

Ja bym zaproponował w zamian użycie wbudowanej funkcji PODSTAW i jeżeli są jeszcze jakieś dodatkowe warunki to zamieścić je wewnątrz/na zewnątrz tej f-cji. Czemu? Wbudowane funkcje są dużo, duże bardziej optymalne niż te napisane własnoręcznie. Różnice w wydajności przy ich większej ilości (np UDF w 1.000 komórek) mogą być naprawdę mocno odczuwalne.
Denis Grenda

Denis Grenda Student pierwszego
roku studiów
magisterkich
matematyki w...

Temat: Funkcja w VBA

Teraz widzę, dawałem podobne argumenty jak do replace, nie mam pojęcia dlaczego tak robilem, dziękuję za odpowiedź.
Damian Z.:
Pewnie masz rację, no ale jakoś się trzeba tego vba nauczyć :)
Dlatego chciałem dać też te warunki, funkcją powinna być ciut wydajniejsza niż w mojej pierwszej wersji.
Damian Zurawski

Damian Zurawski Data Engineer w
Grupie Żywiec

Temat: Funkcja w VBA

Łuki N.:
Pewnie masz rację, no ale jakoś się trzeba tego vba nauczyć :)

No i prawidłowo, trzymam kciuki :)

Następna dyskusja:

funkcja DBS




Wyślij zaproszenie do