Pages - Menu

Jumat, 11 November 2011

Formula Tambahan


Di dalam buku Hisab Falak yang disusun oleh bapak H Ilya Asyhari Nawawi dari Bandungsari Grobogan, terdapat rumus Visual Basic Editor yang kompatibel untuk perangkat lunak Microsoft Excel. Fungsi dari rumus tersebut adalah untuk mengetahui diantaranya; awal waktu salat, arah kiblat dan rashdul kiblat. Namun, semenjak rumus itu ditulis sekitar sepuluh tahun yang lalu, nampaknya belum pernah direvisi ulang oleh penulis. Maklum, di PP Fadllul Wahid, materi ini tidak pernah diajarkan sama sekali.
Untuk rumus penentuan awal waktu salat, dalam buku itu hanya dirancang untuk Waktu Indonesia Barat (WIB) atau zona GMT+7. Padahal saat ini, berdasarkan keputusan Presiden Soeharto tahun 1988, Negara Kesatuan Republik Indonesia dibagi menjadi tiga zona waktu. Dengan ketentuan sebagai berikut; Waktu Indonesia Barat untuk pulau Sumatra, Jawa, Kalimantan Barat dan Kalimantan Tengah. Waktu Indonesia Tengah (WITA) untuk Bali, NTB, NTT, Kalsel, Kaltim dan Sulawesi. Waktu Indonesia Timur (WIT) untuk Gorontalo, Maluku dan Papua.
Maka dari itu, untuk bisa digunakan pada daerah-daerah yang berada di zona WITA atau WIT harus diedit sendiri dengan cara menambahkan function-function baru atau menambah argumen. Dan cara terakhirlah yang saya pilih karena lebih praktis.
Tulisan di bawah ini adalah kumpulan formula yang telah saya revisi agar bisa sesuai dengan seluruh daerah di Indonesia.

Function Tafaut1(Tgl, Bt, Markaz)
Tafaut1 = ((Bt - Markaz) / 15) - Tafaut(Tgl)
End Function

Function H_Sunset(Ard, Tgl, Ttmp)
Dekl = Mail(Tgl)
Sdm = Asinus(Sinus(-0.25) / Cosinus(Ard) / Cosinus(Dekl))
Refraksi = Asinus(Sinus(0 - 33 / 60 - 30 / 3600) / Cosinus(Ard) / Cosinus(Dekl))
Dip = -1.76 * Sqr(Ttmp) / 60
H_Sunset = Sdm + Refraksi + Dip
End Function

Function Terbit1(Ard, Bt, Tgl, Ttmp, Markaz)
Taf = Tafaut1(Tgl, Bt, Markaz)
Terbi = Terbit(Ard, Tgl, Ttmp)
Terbit1 = Terbi - Taf
End Function

Function Magrib1(Ard, Bt, Tgl, Ttmp, Markaz)
Taf = Tafaut1(Tgl, Bt, Markaz)
Magri = Magrib(Ard, Tgl, Ttmp)
Magrib1 = Magri - Taf
End Function

Function Dluha1(Ard, Bt, Tgl, Markaz)
Taf = Tafaut1(Tgl, Bt, Markaz)
Dluh = Dluha(Ard, Tgl)
Dluha1 = Dluh - Taf
End Function

Function Dluhur1(Tgl, Bt, Markaz)
Dluhur1 = 12 - Tafaut1(Tgl, Bt, Markaz)
End Function

Function Ashar1(Ard, Bt, Tgl, Markaz)
Taf = Tafaut1(Tgl, Bt, Markaz)
Asar = Ashar(Ard, Tgl)
Ashar1 = Asar - Taf
End Function


Function Isya1(Ard, Bt, Tgl, Markaz)
Taf = Tafaut1(Tgl, Bt, Markaz)
Isy = Isya(Ard, Tgl)
Isya1 = Isy - Taf
End Function

Function Range360(x As Double) As Double
Range360 = x - 360 * Int(x / 360)
End Function

Function AzimutQiblat(LintangT As Double, BujurT As Double) As Double
Dim AQ As Double
AQ = Application.Degrees(Application.Atan2((Cos(Application.Radians(LintangT)) _
* Tan(Application.Radians(21 + 25 / 60)) - Sin(Application.Radians(LintangT)) _
* Cos(Application.Radians((39 + 50 / 60) - BujurT))), _
Sin(Application.Radians((39 + 50 / 60) - BujurT))))
AzimutQiblat = Range360(AQ)
End Function

Function Drj(x)
Jam = Format(Fix(x), "0#")
Mnt = Format(Fix(Abs((x - Fix(x)) * 60)), "0#")
Dtk = Format((Abs(((x - Fix(x)) * 60) - Fix((x - Fix(x)) * 60))) * 60, "0#")
If Jam = 0 And x < 0 Then
Jam = "-00"
Else
Jam = Jam
End If
Drj = Jam & Chr(176) & " " & Mnt & Chr(39) & " " & Dtk & Chr(34)
End Function

Function Hpasar(tgl As Date)
Dim Myweek, Mypasar, Har, Pas
Har = tgl Mod 7
Pas = tgl Mod 5
Myweek = Array("Sabtu", "Ahad", "Senin", "Selasa", "Rabu", "Kamis", "Jum'at")
Mypasar = Array("Kliwon", "Legi", "Pahing", "Pon", "Wage")
Hpasar = Myweek(Har) & " " & Mypasar(Pas)
End Function

Function Terbilang(n As Long) As String 'max 2.147.483.647
Dim satuan As Variant
On Error GoTo terbilang_error
satuan = Array("", "Satu", "Dua", "Tiga", "Empat", "Lima", "Enam", "Tujuh", "Delapan", "Sembilan", "Sepuluh", "Sebelas")
Select Case n
Case 0 To 11
Terbilang = " " + satuan(Fix(n))
Case 12 To 19
Terbilang = Terbilang(n Mod 10) + " Belas"
Case 20 To 99
Terbilang = Terbilang(Fix(n / 10)) + " Puluh" + Terbilang(n Mod 10)
Case 100 To 199
Terbilang = " Seratus" + Terbilang(n - 100)
Case 200 To 999
Terbilang = Terbilang(Fix(n / 100)) + " Ratus" + Terbilang(n Mod 100)
Case 1000 To 1999
Terbilang = " Seribu" + Terbilang(n - 1000)
Case 2000 To 999999
Terbilang = Terbilang(Fix(n / 1000)) + " Ribu" + Terbilang(n Mod 1000)
Case 1000000 To 999999999
Terbilang = Terbilang(Fix(n / 1000000)) + " Juta" + Terbilang(n Mod 1000000)
Case Else
Terbilang = Terbilang(Fix(n / 1000000000)) + " Milyar" + Terbilang(n Mod 1000000000)
End Select
Exit Function
terbilang_error:
MsgBox Err.Description, vbCritical, "^_^ Terbilang Error"
End Function


Catatan:
Kombinasi karakter spasi dan underscore ( _) digunakan untuk pindah ke baris bawah tanpa memutus susunan rumus tersebut.
Anda juga masih harus menulis rumus-rumus yang ada di buku Hisab Falak, karena antara satu dengan yang lainnya masih berkesinambungan.

Tidak ada komentar:

Posting Komentar

Silakan berkomentar dan tunggu kunjungan balik dari saya. Tabik!