Wielokrotnie podczas programowania potrzeba zwrócić numer miesiąca (niekoniecznie aktualnego) jako liczbę rzymską. Po co? Otóż czasami np. wygenerowany numer zamówienia ma w sobie zawarty miesiąc. I klientka zażyczyła sobie, aby miesiąc nie był jako numer miesiąca, tylko była to liczba rzymska. Pierwsza moja myśl była następująca:
Function PodajMiesiacRzymski(Miesiac As Long) As String
Dim Ret As String
Select Case Miesiac
Case 1: Ret = "I"
Case 2: Ret = "II"
Case 3: Ret = "III"
Case 4: Ret = "IV"
Case 5: Ret = "V"
Case 6: Ret = "VI"
Case 7: Ret = "VI"
Case 8: Ret = "VIII"
Case 9: Ret = "IX"
Case 10: Ret = "X"
Case 11: Ret = "XI"
Case 12: Ret = "XII"
Case Else: Ret = "zły miesiąc"
End Select
PodajMiesiacRzymski = Ret
End Function
Sub Testuj()
Dim Miesiac As Long
Miesiac = Month(Date)
MsgBox "Obecny miesiąc jako liczba rzymska to: " + PodajMiesiacRzymski(Miesiac), vbInformation
End Sub
Instrukcja Select Case jest bardzo wygodna, gdyż w przypadku podania nietypowego numeru klauzura Case Else może zwrócić wartość domyślną (np. pusty ciąg znaków, tekst zły miesiąc itp.)
Inne „podręcznikowe” rozwiązanie jakie często widuję to „stablicowanie” numerów miesięcy i zwrócenie odpowiedniego elementu tablicy. No ale, nie byłoby tego wpisu, gdyby nie fakt, że można to zrobić nieco sprytniej.
Czytaj dalej →