środa, 20 marca 2013

Funkcja Format

Muszę przyznać, że funkcja Format należy do tych, których nie doceniam. No, może bez przesady, po prostu nie miałem okazji zbyt często sięgać po nią mając na podorędziu zestaw funkcji VBA oraz inne umiejętności programistyczne. Wobec jednak faktu, że funkcja oferuje wiele korzyści związanych z formatowaniem zwracanych wartości poświęcę jej niniejszy wpis skupiając się na wybranych i najbardziej praktycznych przypadkach.

1. Formatowanie daty to najczęstsze skojarzenie z funkcją format. Zobaczmy kilka możliwych konstrukcji i zwracane z ich wykorzystaniem wartości:

01Sub Format_Data()
02 
03    Dim Teraz As Date
04        Teraz = now
05        
06        Debug.Print "dzień tygodnia: " & Format(Teraz, "dddd")
07                '>wtorek
08        Debug.Print "dzień miesiąca: " & Format(Teraz, "mmmm")
09                '>marzec
10        Debug.Print "długa data: " & Format(Teraz, "dddddd")
11        Debug.Print "długa data: " & Format(varMix, "Long date")
12                '>w obu przypadkach: 10 marzec 2013
13    
14End Sub

a ponadto cały zestaw dat krótki, fragmentów godziny, itp. Wszystko oczywiście ukryte w parametrach funkcji odpowiednio umieszczonych w cudzysłowach.

2. Formatowanie liczb. Tu oczywiście do dyspozycji mamy cały zestaw możliwości. Sięgnijmy więc po przykład dla liczby Pi.
01Sub Format_Liczby()
02 
03    Dim liczbaPI As Double
04        liczbaPI = WorksheetFunction.Pi()
05        
06        Debug.Print "format rozszerzony: " & _
07                Format(liczbaPI, "0000.0000")
08                '>0003.1416
09        Debug.Print "procent: " & Format(liczbaPI, "##.##%")
10                '>314.16%
11        Debug.Print "format księgowy: " & _
12                Format(liczbaPI * 10000, "# ###.00")
13                '>31 415,93
14    
15End Sub

3. Przykład przedostatni dotyczy formatowania tekstu.

01Sub Format_Tekst()
02    Dim strTekst As String
03        strTekst = "Projekt VBA Szkolenia VBA"
04        
05        Debug.Print "z wielkich liter: " & Format(strTekst, ">")
06                '>PROJEKT VBA SZKOLENIA VBA
07        Debug.Print "z małych liter: " & Format(strTekst, "<")
08                '>projekt vba szkolenia vba
09                
10End Sub

4. Ostatni zestaw przykładów to dodatkowe możliwości formatowania wartości liczbowych ze względu na znak liczby i opcjonalny wynik zero.
01Sub Format_Ciekawostki()
02 
03    Dim varMix As Variant
04    varMix = -100000
05    Debug.Print "Ciekawostka 1: " & _
06        Format(varMix, "##0 PLN;-##0 PLN")
07        '>-100 PLN
08    varMix = 0
09    Debug.Print "Ciekawostka 2: " & _
10        Format(varMix, "# ##0 PLN;-# ##0 PLN;Zero")
11        '>Zero
12    
13End Sub

No dobrze, dla osób, które dobrnęły do końca 2 ważne informacje- tradycyjnie informacja dobra i zła. Ta dobra jest taka, że konstrukcja parametrów formatowania jest tożsama z tą, którą większość z osób zna z Excela jako niestandardowe formatowanie komórek. A zła informacja jest taka, że funkcja Format zwraca... tekst (String), nawet wtedy gdy formatowaniu poddajemy wartości liczbowe.

Brak komentarzy:

Prześlij komentarz