1. Jak używać funkcji Format w VBA?
Funkcja Format jest specyficznym typem funkcji w VBA. Działa zarówno na typach danych VBA date, string oraz typach liczbowych. Poniżej opisane jest używanie funkcji VBA Format dla wszystkich obsługiwanych przez nią typów danych. Funkcja ta wstawia maskę dla danych. Dla przykładu za jej pomocą zapiszemy:
- Numer telefonu w formacie 999-999-999
- Kod pocztowy np 02-782
- Datę w formacie 2017/12/24 lub 2017/12/24
- Liczbę z separatorem dziesiętnym np 456 125 544,56 itp.
Składnia funkcji Format VBA wygląda następująco:
'tomaszkenig.pl Format ( expression, [ format ] )
expression – data, tekst lub liczba, którą chcemy sformatować.
format – argument opcjonalny. To w nim wprowadzamy oczekiwany format dla wartości.
2. VBA Format dla wartości liczbowych.
Poniżej tabelka z formatami, które możemy wstawić w drugim argumencie funkcji dla wartości liczbowych.
Format | Opis |
---|---|
0 | Zastępuje dowolną liczbę. Służy także do wstawiania zer wiodących. |
spacja | Jeśli chcemy, by pomiędzy liczbami była spacja |
- | Myślnik używany dla numerów telefonów i kodów pocztowych. |
Currency | Format zdefiniowany dla jednostek pieniężnych. Zawieta separator dziesiętny. |
Fixed | Wyświetla 1 znak przed miesjcem dziesiętnym i dwa znaki po przecinku. |
Standard | Wyświetla separatory tysięczne i 2 miejsca po przecinku |
Percent | Format zdefiniowany dla zapisu procentowego |
Scientific | Zapis naukowy |
Poniżej przykłady użycia funkcji VBA Format dla wartości liczbowych.
'tomaszkenig.pl Sub FormatNums() Dim sngNumber As Single Dim intNumber As Integer Dim LngNumber As Long Dim dblNumber As Double sngNumber = 123.456 intNumber = 2456 LngNumber = 515515515 dblNumber = 0.98 MsgBox Format(LngNumber, "000 000 000") MsgBox Format(LngNumber, "000-000-000") MsgBox Format(intNumber, "00-000") MsgBox Format(sngNumber, "Currency") MsgBox Format(sngNumber, "Fixed") MsgBox Format(intNumber, "standard") MsgBox Format(dblNumber, "Percent") MsgBox Format(sngNumber, "Scientific") End Sub
3. Funkcja Format VBA dla dat i czasu.
Poniżej tabelka z formatami, które możemy wstawić w drugim argumencie funkcji dla wartości dat i czasu.
Format | Opis |
---|---|
d | 1-31 dzień miesiąca bez zera wiodącego |
dd | 01-31 dzień miesiąca z zerem wiodącym |
w | Dzień tygodnia z zakresu 1-7 |
ww | 1-53 (Week of year, with no leading zero; Week 1 starts on Jan 1). |
mmm | Nazwa miesiąca pisana słownie w sposób skrócony np. sty |
mmmm | Nazwa miesiąca pisana słownie w sposób pełny np. styczeń |
y | Dzień roku z zakresu 1-366 |
yy | Rok w zakresie 00-99 |
yyyy | Rok w zakresie 100-9666 |
h | Godzina w zakresie 0-23 bez zera wiodącego |
hh | Godzina w zakresie 00-23 z zerem wiodącym |
n | Minuty w zakresie 0-59 bez zera wiodącego |
nn | Minuty w zakresie 00-59 z zerem wiodącym |
s | Sekundy w zakresie 0-59 bez zera wiodącego |
ss | Sekundy w zakresie 00-59 z zerem wiodącym |
. : - | Separatory dat i czasu |
Poniżej przykłady użycia funkcji VBA Format dla wartości dat i czasu.
'tomaszkenig.pl Sub FormatDates() datExample = Now MsgBox Format(datExample, "yyyymmdd") MsgBox Format(datExample, "dd mmmm yyyy") MsgBox Format(datExample, "yyyy-mm-dd hh:nn:ss") End Sub
Dodatkowo załączam link do artykułu, którym zapisujemy plik z datą w nazwie pliku z użyciem funkcji Format dla dat: Data w nazwie pliku VBA.
Artykuł jest częścią kursu vba Excel. Całość kursu znajdziesz pod tym linkiem: Kurs VBA. Poniżej zamieszczam plik z kodem programu: