'********************************************************************************************************** ' Nazwa: dodajWiodaceZera ' Autor: mielk | 2012-02-12 ' ' Opis: Funkcja dodająca do podanej liczby odpowiednią liczbę wiodących zer. ' ' Argumenty: ' wartosc Liczba bazowa, do której mają zostać dodane wiodące zera. ' * Część ułamkowa liczby bazowej i znak minus są ignorowane. ' * Jeżeli podany argument nie jest liczbą i niemożliwe jest jego przekonwertowanie ' na liczbę, zwracana jest tekstowa reprezentacja tego argumentu, a jeśli jest to ' niemożliwe (np. podany argument jest tablicą lub obiektem), zwracany jest wyjątek ' NieprawidlowyTyp. ' dlugosc Opcjonalny argument liczbowy, który określa minimalną liczbę znaków tekstu ' wynikowego. ' * W przypadku argumentów dłuższych niż oczekiwana długość tekstu wynikowego, ' argument bazowy zwracany jest w całości (jeśli przykładowo argument wynosi 1000, ' a długość tekstu wynikowego, określona przez argument [ileZnakow], powinna ' wynosić 2, i tak zwrócony zostanie tekst 1000, składający się z 4 znaków). ' * Domyślna wartość tego parametru wynosi 2. ' ' Zwraca: ' String Tekst składający się z liczby bazowej, przekazanej jako argument [wartosc] oraz ' takiej ilości wiodących zer, aby wynikowy tekst posiadał liczbę znaków określoną ' przez argument [ileZnakow]. ' ' Wynikowy tekst może przekraczać żądaną długość, jeżeli bazowa liczba posiada ' więcej znaków niż wynosi argument [ileZnakow] - w takiej sytuacji liczba bazowa ' nie jest skracana, ale zwracana w całości. ' ' Jeżeli przekazany do funkcji argument nie jest liczbą i nie może być ' przekonwertowany na liczbę, zwracana jest jego reprezentacja tekstowa. Jeżeli ' uzyskanie tekstowej reprezentacji tego argumentu jest niemożliwe (np. jest on ' tablicą lub obiektem), zwracany jest wyjątek NieprawidlowyTyp. ' ' ' Wyjątki: ' NiedozwolonyTypZmiennej Jeżeli przekazany do funkcji argument nie jest liczbą i nie jest ' możliwe jego konwersja na liczbę ani uzyskanie jego tekstowej ' reprezentacji. ' ' ' --- Zmiany ---------------------------------------------------------------------------------------------- ' 2012-02-12 mielk Utworzenie funkcji. '********************************************************************************************************** Public Function dodajWiodaceZera(ByVal wartosc As Variant, Optional ByVal dlugosc As Byte = 2) As String Const NAZWA_METODY As String = "dodajWiodaceZera" '------------------------------------------------------------------------------------------------------ Dim iBrakujaceZnaki As Integer Dim lLiczba As Long '------------------------------------------------------------------------------------------------------ 'Funkcja sprawdza czy podany argument wejściowy jest liczbą. Jeżeli nie, nie jest podejmowane -------| 'żadne działanie i zwracana jest oryginalna wartość argumentu bazowego. '| If VBA.IsNumeric(wartosc) Then '| '| 'Usuwa z liczby bazowej minus i część ułamkową '| lLiczba = VBA.Int(VBA.Abs(wartosc)) '| '| 'Sprawdza z ilu znaków składa się bazowa liczba i ile znaków trzeba do niej dodać, żeby '| 'wynikowy tekst posiadał oczekiwaną długość. '| iBrakujaceZnaki = dlugosc - VBA.Len(VBA.CStr(lLiczba)) '| '| 'Jeśli brakująca liczba znaków jest ujemna, oznacza to, że tekstowa reprezentacja -----------| '| 'bazowej liczby jest dłuższa od oczekiwanej ilości znaków i zostaje zwrócona w całości. '| '| 'W przeciwnym razie na początku dołączana jest odpowiednia liczba zer. '| '| If iBrakujaceZnaki > 0 Then '| '| '| '| 'Do dodania odpowiedniej liczby zer wykorzystana jest funkcja [String] '| '| 'powtarzająca n razy określony znak. '| '| dodajWiodaceZera = VBA.String(iBrakujaceZnaki, "0") & lLiczba '| '| '| '| Else '| '| '| '| dodajWiodaceZera = lLiczba '| '| '| '| End If '| '| '--------------------------------------------------------------------------------------------| '| '| Else '| '| 'Jeżeli podany argument nie jest liczbą, zwracana jest jego tekstowa reprezentacja. '| 'Jeżeli jest to niemożliwe, wykonanie kodu jest przenoszone do etykiety NieprawidlowyTyp. '| On Error GoTo NiedozwolonyTypZmiennej '| dodajWiodaceZera = VBA.CStr(wartosc) '| '| End If '| '----------------------------------------------------------------------------------------------------| '========================================================================================================== PunktWyjscia: Exit Function '---------------------------------------------------------------------------------------------------------- NiedozwolonyTypZmiennej: '(...) 'Obsługa błędów dla sytuacji, kiedy podany parametr jest obiektem lub tablicą i nie da się go 'przekonwertować do typu tekstowego. GoTo PunktWyjscia End Function