Selasa, 06 Desember 2011

RUMUS-RUMUS FORMULA DALAM MICROSOFT EXCEL

Jenis Data
1.      Data numeric : data yang dapat dihitung
2.      Data text : data yang tidak dapat dihitung, gunakan tanda petik tunggal (‘)

Format Tampilan Data
1.      Sorot/Blok sel yang akan di format
2.      Klik menu Format dan klik cells (Ctrl +1), bisa juga menggunakan mouse
3.      Klik salah satu : Number, Aligment, Font, Border, Pattern, dan Protection

Number :
Digunakan untuk memformat nilai numerik, yang terdiri atas beberapa angka yang mewakili angka, nilai satuan mata uang, tanggal, waktu, persentase dan sebagainya.
Alegment :
Digunakan untuk mengatur suatu sel atau range dengan posisi rata kiri, rata kanan, dan rata tengah. Juga mengatur derajat kemiringan data.
Font :
Untuk memilih jenis, ukuran,tampilan warna, dan efek khusus huruf.
Border :
Untuk membuat bingkai atau menambah garis pembatas pada suatu sel atau range.
Patterns :
Untuk memberi warna dan corak latar belakang sel atau range.

Mengubah Nama Sheet
1.      Klik sheet yang akan diubah namanya, klik menu Format pilih sheet
2.      Klik Rename, klik nama baru, enter

Menambah Sheet Baru
1.      Klik kanan (mouse) pada sheet
2.      Klik Insert, pilih Workshet, Klik OK
3.      Untuk memindahkan sheet, klik (tahan) tarik sheet ptempat yang diinginkan

Membuat Grafik
1.      Blok data yang akan dibuat menjadi grafik
2.      Klik insert,Klik chart
3.      Pilih type chart yang diinginkan, lalu next
4.      Pilih datanya yang dibaca Rows atau Colums pada series in untuk menentukan pembacaan data kolom atau baris, lalu klik next
5.      Lalu pilih Title untuk buat judul grafik,
a.       Axes : sumbu X dan Y
b.      Gridlines : untuk garis-garis didalam grafik
c.       Legend : untuk keterangan nama grafik
d.      Data labes : untuk menampilkan nilai pada gambar grafik
e.       Data table : menampilkan data grafik
6.      Bila telah benar klik Next
7.      Tentukan letak grafik As new sheet (lembar kerja baru) atau As object in (lembar kerja yang aktif), setelah selesai klik Finish.

Membuat Catatan & Menggunakan Filter
a.       Letakkan kusor pada sel yang diinginkan Klik kanan pada mouse Insert Comment
b.      Letakkan kusor pada sel yang akan dikoreksi, pada menu Data klik Filter, klik AutoFilter = Untuk memparmudah koreksi
Ekspresi Atau Pernyataan Logika
=
<=
>=
<> 
Sama dengan
Lebih kecil
Lebih besar
Lebih kecil Sama dengan
Lebih besar Sama dengan
Tidak sama dengan
A1=B1
A1<B1
A1>B1
A1<=B1
A1>=B1
A1<>B1
+
-
*
/
%
^
&
: atau ;
, (dan)
“ (maka)
Penjumlahan
Pengurangan
Perkalian
Pembagian
Persen
Pangkat
Dan
Sebagai batas range
Penggabung renge
Pernyataan
1+2
2-1
2*2
2/2
20%
2^2
“Na” & “ma”
A1: E9
Sum(A1:A7,C1:C7
(3)
(1)
(4)
(1)
(0,2)
(4)
(Nama)

Menggunakan Fungsi Matematika Dan Statistika
Sum
Max
Min
Average
Sumif
Counta
Countif
Penjumlahan
Nilai tertinggi
Nilai terendah
Rata-rata
Penjumlahan yang memiliki kreteria tertentu
Menghitung sel yang terisi data
Menghitung sel yang terisi data dengan kreteria tertentu

Operator Logika
AND (dan)
OR (atau)
=And(B5>1000,C5>15%)
=Or(B5>1000,C5>15%)

Fungsi Logika If
IF (Jika)
=IF(B6="M","Menikah",IF(B6="B","Belum"))

Fungsi If Dengan Dua Ekspresi
If(Or(
IF(AND(
=IF(OR(E6="PIMPINAN",E6="MANAGER"),7%*F6,0)
=IF(AND(E6="STAFF",D6="nikah"),5%*F6,0)

Fungsi Teks/Strings
Left (kiri)
Right (Kanan)
Mid (tengah)
=Left(B2,2)
=Right(B2,2)
=Mid(B2,2)

Fungsi Vlookup & Hlookup
Vlookup
Hlookup
F4
Untuk data ke atas
Untuk data mendatar
Untuk mengunci data

Cara mudah mencetak kode barcode

Sesuai judulnya jadi kita akan mencetak kode barcode, jadi bukan membuat kode barcode karena coding untuk membuat kode barcode lumayan menyita waktu dan tenaga (asalkan buatnya dari nol bukan copas source code :D )
Beberapa waktu yang lalu saya sudah membahas bagaimana membuat form input hari libur yang diambil dari salah satu fitur Smart Library School, kali ini saya membahas fitur lainnya yaitu pencetakan kode barcode yang tentunya dengan cara yang instan :D
Ada 2 mode pencetakan yang akan saya share disini :

1. Cetak barcode tunggal, sesuai namanya kita akan mencetak 1 kode barcode dengan posisi yang bisa kita atur sendiri.

2. Cetak barcode kelompok, mencetak beberapa kode barcode sekaligus

Proses pembuatan barcodenya sendiri tidak perlu koding khusus, yang diperlukan hanya kode untuk mencetaknya itulah mudahnya klo menggunakan komponen pihak ke tiga he he he :D .
Ingat komponen ini adalah shareware, segala resiko (kemudahan dalam mencetak kode barcode) ditanggung sendiri :D , saya disini hanya share dan tidak terikat kerja sama dengan pihak ketiga tersebut.
:evil:
Oke langsung saja kita akan buat rancangan tampilannya seperti berikut :

Adapun kode pencetakannya adalah sebagai berikut :
01Private Sub cmdCetak_Click()
02    Dim batasKiri   As Single
03    Dim batasAtas   As Single
04 
05    Dim posisi      As Integer
06 
07    If MsgBox("Apakah proses pencetakan kode barcode ingin dilanjutkan ?", vbExclamation + vbYesNo, "Konfirmasi") = vbYes Then
08        Screen.MousePointer = vbHourglass
09        DoEvents
10 
11        Printer.PSet (0, 0), vbWhite
12        Printer.ScaleMode = vbPixels
13 
14        batasKiri = 0
15        batasAtas = 2.5
16        posisi = 0
17 
18        Do While posisi < 30
19            If Check1(posisi).Value = Checked Then
20                If posisi >= 0 And posisi <= 5 Then
21                    batasKiri = 0
22 
23                ElseIf posisi >= 6 And posisi <= 11 Then
24                    batasKiri = 4
25 
26                ElseIf posisi >= 12 And posisi <= 17 Then
27                    batasKiri = 8
28 
29                ElseIf posisi >= 18 And posisi <= 23 Then
30                    batasKiri = 12
31 
32                Else
33                    batasKiri = 16
34                End If
35 
36                Select Case posisi
37                    Case 0, 6, 12, 18, 24
38                        batasAtas = 0.5
39                    Case 1, 7, 13, 19, 25
40                        batasAtas = 3.2
41                    Case 2, 8, 14, 20, 26
42                        batasAtas = 5.8
43                    Case 3, 9, 15, 21, 27
44                        batasAtas = 8.4
45                    Case 4, 10, 16, 22, 28
46                        batasAtas = 11.2
47                    Case 5, 11, 17, 23, 29
48                        batasAtas = 13.9
49                End Select
50 
51                TBarCode51.Text = txtKodeBarcode.Text
52                TBarCode51.BackStyle = BKS_Transparent
53                TBarCode51.BCDraw Printer.hDC, Printer.ScaleX(batasKiri, vbCentimeters), Printer.ScaleY(batasAtas, vbCentimeters), Printer.ScaleX(3, vbCentimeters), Printer.ScaleY(1.5, vbCentimeters)
54            End If
55            posisi = posisi + 1
56        Loop
57        Printer.EndDoc
58 
59        Screen.MousePointer = vbDefault
60    End If
61End Sub

dan terakhir kode untuk mencetak barcode kelompok :
01Private Sub cmdCetak_Click()
02    Dim x           As Long
03    Dim y           As Long
04    Dim Index       As Integer
05 
06    Dim sgLeft1     As Single
07    Dim sgleft2     As Single
08    Dim sgTop       As Single
09 
10    Dim fExit       As Boolean
11 
12    If MsgBox("Apakah proses pencetakan kode barcode ingin dilanjutkan ?", vbExclamation + vbYesNo, "Konfirmasi") = vbYes Then
13        Screen.MousePointer = vbHourglass
14        DoEvents
15 
16        Printer.PSet (0, 0), vbWhite
17        Printer.ScaleMode = vbPixels
18        sgTop = Printer.ScaleY(2.5, vbCentimeters)
19        sgLeft1 = Printer.ScaleX(1, vbCentimeters)
20 
21        While fExit = False
22            x = 1
23            While fExit = False And x <= 3
24                y = 1
25                While fExit = False And y <= 4
26                    'top margin
27                    If y > 1 Then
28                        sgTop = sgTop + Printer.ScaleY(3.5, vbCentimeters)
29                    Else
30                        sgTop = Printer.ScaleY(2.5, vbCentimeters)
31                    End If
32 
33                    'left margin
34                    If x = 1 Then
35                        sgleft2 = Printer.ScaleX(1, vbCentimeters)
36                    ElseIf x = 2 Then
37                        sgleft2 = sgLeft1 + Printer.ScaleX(6.79, vbCentimeters)
38                    Else
39                        sgleft2 = sgLeft1 + Printer.ScaleX(6.64, vbCentimeters)
40                    End If
41 
42                    If Not ((Index + 1) > lstDaftarBarcode.ListCount) Then
43                        TBarCode51.Text = lstDaftarBarcode.List(Index)
44                        TBarCode51.BackStyle = BKS_Transparent
45                        TBarCode51.BCDraw Printer.hDC, sgleft2, sgTop, Printer.ScaleX(4.4, vbCentimeters), Printer.ScaleY(1, vbCentimeters)
46                    End If
47 
48                    If (Index + 1) > lstDaftarBarcode.ListCount Then
49                        fExit = True
50                    Else
51                        Index = Index + 1
52                    End If
53 
54                    y = y + 1
55                Wend
56 
57                sgLeft1 = sgleft2
58                x = x + 1
59            Wend
60 
61            If Not fExit Then
62                Printer.NewPage
63                sgTop = Printer.ScaleY(2, vbCentimeters)
64                sgLeft1 = Printer.ScaleX(1.5, vbCentimeters)
65            End If
66 
67        Wend
68 
69        Printer.EndDoc
70        Screen.MousePointer = vbDefault
71    End If
72End Sub
Selamat MENCOBA

Membuat sms gateway itu gampang, jangan dipersulit !!!

Walaupun sudah banyak blog yang membahas tentang masalah ini, tapi kayaxnya tema “sms gateway” masih hangat dan saru eh… seru untuk dibahas :D , dan tentunya dengan adanya artikel ini saya berharap lebih banyak lagi yang tersesat ke blog ini :D .
Oke jadi kasusnya apa nih, kita ambil aja sample sederhana yaitu “pembuatan sms gateway untuk request nilai siswa” dan untuk menyederhanakan pembahasan keywordnya kita batasi saja yaitu request nilai tugas dan ulangan.
Apa yang harus di persiapkan, pertama kita rancang dulu databasenya dan berhubung artikel saya yang membahas tentang database SQLite masih hangat jadi untuk databasenya kita menggunakan SQLite saja.

SQLite adalah database standalone yang kecil, mungil dan gratis. Bagaimana cara membuat database di SQLite sudah saya bahas disini kemudian bagaimana mengaksesnya dari aplikasi juga sudah saya bahasa disini.
Berikut adalah rancangan sederhana database sms yang akan kita buat :

Ada banyak cara untuk membaca sms masuk dan membalasanya, salah satunya adalah menggunakan perintah AT COMMAND dan Microsoft sendiri sudah menyediakan komponen yang bisa mengeksekusi perintah-perintah tersebut.
Tentunya cara ini (menggunakan AT COMMAND) bukan cara yang favorit dikalangan programmer instan seperti Anda dan Saya :D , jadi diartikel ini saya menggunakan komponen pihak ketiga.
Ingat komponen ini adalah shareware, segala resiko (kemudahan dalam membuat aplikasi sms gateway) ditanggung sendiri :D , saya disini hanya share dan tidak terikat kerja sama dengan pihak ketiga tersebut.
Halah pernyataan ngawur :D
Berikut adalah cuplikan source code untuk membaca dan mengirim sms menggunakan komponen ActiveXpert SMS
1. Membaca SMS Masuk
01Private Sub cmdBacaSMS_Click()
02    Dim objGsmIn        As ASmsCtrl.GsmIn
03 
04    Set objGsmIn = New ASmsCtrl.GsmIn
05    With objGsmIn
06        .Activate "XXX-XXXX-XXXX-XXXXX"  'diisi serial number yg Anda dapatkan secara ilegal
07        .Device = "COM1" 'disesuaikan dengan port COM yang digunakan
08        .DeviceSpeed = 19200 'default = 0
09 
10        .Storage = 2 '0=sim 1=device 2=any
11        .DeleteAfterReceive = True
12        .Receive
13 
14        If .LastError = 0 Or .LastError = 23140 Then ' Success
15            .GetFirstMessage
16 
17            While .LastError = 0
18                Debug.Print "Pengirim : " & .MessageSender
19                Debug.Print "Isi SMS : " & .MessageData
20 
21                'TODO : INSERT KE TABEL SMS_IN
22 
23                .GetNextMessage
24            Wend
25        End If
26    End With
27    Set objGsmIn = Nothing
28End Sub
2. Mengirim sms
01Private Sub cmdKirimSMS_Click()
02    Dim objGsmOut       As ASmsCtrl.GsmOut
03    Dim objConstants    As ASmsCtrl.Constants
04 
05    Set objGsmOut = New ASmsCtrl.GsmOut
06    Set objConstants = New ASmsCtrl.Constants
07 
08    With objGsmOut
09        .Activate "XXX-XXXX-XXXX-XXXXX"  'diisi serial number yg Anda dapatkan secara ilegal
10        .Device = "COM1" 'disesuaikan dengan port COM yang digunakan
11        .DeviceSpeed = 19200 'default = 0
12        .RequestStatusReport = False
13 
14        .MessageType = objConstants.asMESSAGETYPE_TEXT 'mengirim pesan maksimal 160 karakter
15        '.MessageType = objConstants.asMESSAGETYPE_TEXT_MULTIPART 'jika lebih dari 160 karakter gunakan opsi ini
16 
17        .MessageRecipient = "nomor tujuan" 'biasanya menggunakan prefix +62
18        .MessageData = "isi pesan"
19        .Send 'kirim
20    End With
21 
22    Set objConstants = Nothing
23    Set objGsmOut = Nothing
24End Sub
Jadi cukup dengan bermodalkan 2 cuplikan kode diatas kita akan menyelesaikan aplikasi yg dibahas pada artikel kali ini.
Adapun untuk keyword yang akan digunakan sebagai berikut :
1. Request nilai tugas
keyword : tgs#nis
contoh :
tgs#9941224165
balasan :
Nilai tugas (NAMA SISWA) : BI=95, IPA=75, IPS=80, MTK=85
2. Request nilai ulangan harian
keyword : uh#nis
contoh :
uh#9941224165
balasan :
Nilai ulangan (NAMA SISWA) : BI=95, IPA=75, IPS=80, MTK=85
Berikut penjelasan ringkas beberapa cuplikan source code yang digunakan dalam pembuatan aplikasi sms gateway ini.
01Private Function connectToDevice(ByVal device As String) As Boolean
02    Dim objGsm      As ASmsCtrl.GsmOut
03    Dim manufaktur  As String
04 
05    On Error GoTo errHandle
06 
07    Set objGsm = New ASmsCtrl.GsmOut
08    With objGsm
09        .Activate SERIAL_NUMBER
10        .device = device
11 
12        manufaktur = .SendCommand("AT+CGMI", 500)  'menampilkan informasi manufactur
13        manufaktur = Replace$(manufaktur, vbCrLf, "")
14        manufaktur = Replace$(manufaktur, "OK", "")
15        manufaktur = Replace$(manufaktur, "ERROR", "")
16        manufaktur = Replace$(manufaktur, "AT+CGMI", "")
17    End With
18    Set objGsm = Nothing
19 
20    If Len(manufaktur) > 0 Then
21        txtModem.Text = manufaktur
22        connectToDevice = True
23    End If
24 
25    Exit Function
26errHandle:
27    connectToDevice = False
28End Function
Sesuai namanya fungsi connectToDevice digunakan untuk mengecek status modem sms yang terpasang, salah satu caranya adalah dengan mengirimkan AT COMMAND “AT+CGM”, AT COMMAND ini berfungsi untuk mendapatkan informasi manufaktur.
Sebagai contoh jika modem sms yg digunakan adalah hp siemens maka nilai yg dihasilkan dari perintah ini adalah “SIEMENS” dan tentunya hp yg bersangkutan juga harus mendukung AT COMMAND.
01Private Sub readSMS()
02    Dim objGsmIn        As ASmsCtrl.GsmIn
03    Dim objConstants    As ASmsCtrl.Constants
04    Dim cmd             As cCommand
05 
06    Dim keyword         As String
07    Dim phoneNumber     As String
08    Dim i               As Integer
09 
10    On Error GoTo errHandle
11 
12    Screen.MousePointer = vbHourglass
13    cmdStop.Enabled = False
14    tmrReceiveSms.Enabled = False
15 
16    DoEvents
17 
18    Set objGsmIn = New ASmsCtrl.GsmIn
19    Set objConstants = New ASmsCtrl.Constants
20 
21    With objGsmIn
22        .Activate SERIAL_NUMBER
23        .device = cmbPORT.Text
24        .DeviceSpeed = 0
25 
26        .Storage = cmbStorage.ItemData(cmbStorage.ListIndex)
27        .DeleteAfterReceive = True 'hapus sms jika sudah dibaca
28        .Receive
29 
30        If .LastError = 0 Or .LastError = 23140 Then 'baca sms sukses
31            .GetFirstMessage
32 
33            strSql = "INSERT INTO sms_in (phone_number, sms_keyword, date_in, time_in) VALUES (?, ?, ?, ?)"
34            Set cmd = conn.CreateCommand(strSql)
35            conn.BeginTrans
36 
37            i = 1
38            While .LastError = 0
39                phoneNumber = rep0to62(.MessageSender)
40                keyword = .MessageData
41 
42                cmd.SetText 1, phoneNumber
43                cmd.SetText 2, keyword
44                cmd.SetDate 3, Format(Now, "yyyy/MM/dd")
45                cmd.SetTime 4, Format(Now, "hh:mm:ss")
46 
47                cmd.Execute
48 
49                If i Mod 10 = 0 Then
50                    conn.CommitTrans
51                    DoEvents
52 
53                    conn.BeginTrans
54                End If
55 
56                i = i + 1
57 
58                .GetNextMessage
59            Wend
60 
61            conn.CommitTrans
62            Set cmd = Nothing
63 
64        End If
65    End With
66    Set objGsmIn = Nothing
67 
68    If cekSMSIn Then
69        Call sendSMS
70    Else
71        Call Wait(5000)
72    End If
73 
74    cmdStop.Enabled = True
75    Screen.MousePointer = vbDefault
76 
77    tmrReceiveSms.Enabled = True
78 
79    Exit Sub
80errHandle:
81    tmrReceiveSms.Enabled = True
82End Sub
Prosedur readSMS digunakan untuk membaca sms masuk dan menyimpannya ke tabel sms_in, berhubung komponen ActiveXpert SMS tidak mempunyai event yg menandai adanya sms masuk maka sebagai gantinya kita menggunakan timer untuk memanggil prosedur readSMS.
Salah satu properties penting yang dimiliki oleh ActiveXpert SMS adalah DeleteAfterReceive, jika nilainya diset true maka sms yg masuk akan otomatis dihapus dan tentunya setelah smsnya dibaca.
1Private Function cekSMSIn() As Boolean
2    Dim ret As Integer
3 
4    strSql = "SELECT COUNT(*) FROM sms_in WHERE status = 0" 'jika status = 0 berarti sms masuk belum di proses
5    ret = CInt(dbGetValue(strSql, 0))
6    If ret > 0 Then 'ada sms yg belum diproses
7        cekSMSIn = True
8    End If
9End Function
Prosedur cekSMSIn dibutuhkan oleh prosedur readSMS, jadi dengan adanya prosedur cekSMSIn ini program akan mengetahui kapan waktu yg tepat untuk memanggil prosedur sendSMS.
01Private Sub sendSMS()
02    Dim rsSend          As cRecordset
03    Dim cmd             As cCommand
04 
05    Dim objGsmOut       As ASmsCtrl.GsmOut
06    Dim objConstants    As ASmsCtrl.Constants
07 
08    Dim phoneNumber     As String
09    Dim keyword         As String
10    Dim smsBalasan      As String
11 
12    On Error GoTo errHandle
13 
14    'cek sms yang belum di proses, ditandai dg status = 0
15    strSql = "SELECT id, phone_number, sms_keyword " & _
16             "FROM sms_in " & _
17             "WHERE status = 0 " & _
18             "ORDER BY id"
19    Set rsSend = conn.OpenRecordset(strSql)
20    If Not rsSend.EOF Then
21        Set objGsmOut = New ASmsCtrl.GsmOut
22        Set objConstants = New ASmsCtrl.Constants
23 
24        objGsmOut.Activate SERIAL_NUMBER
25        objGsmOut.device = cmbPORT.Text
26        objGsmOut.DeviceSpeed = 0
27        objGsmOut.RequestStatusReport = False
28        objGsmOut.MessageType = objConstants.asMESSAGETYPE_TEXT_MULTIPART
29 
30        Do While Not rsSend.EOF
31            'ganti prefix nomor hp 0 -> +62
32            phoneNumber = rep0to62("" & rsSend("phone_number").Value)
33            keyword = rsSend("sms_keyword").Value
34 
35            smsBalasan = getBalasanSms(keyword, phoneNumber)
36 
37            objGsmOut.MessageRecipient = phoneNumber
38            objGsmOut.MessageData = smsBalasan
39            objGsmOut.Send
40 
41            If objGsmOut.LastError = 0 Or objGsmOut.LastError = 23140 Then 'sms sukses dikirim
42                'update status sms -> 1
43                strSql = "UPDATE sms_in SET status = ?, no_ref = ? " & _
44                         "WHERE id = ?"
45                Set cmd = conn.CreateCommand(strSql)
46                With cmd
47                    .SetInt32 1, 1
48                    .SetInt32 2, objGsmOut.MessageReference
49                    .SetInt32 3, rsSend("id").Value
50 
51                    .Execute
52                End With
53                Set cmd = Nothing
54 
55                'insert ke tabel sms_out, untuk histori sms keluar
56                strSql = "INSERT INTO sms_out (phone_number, replay_msg, date_out, time_out) VALUES (?, ?, ?, ?)"
57                Set cmd = conn.CreateCommand(strSql)
58                With cmd
59                    .SetText 1, phoneNumber
60                    .SetText 2, smsBalasan
61                    .SetDate 3, Format(Now, "yyyy/MM/dd")
62                    .SetTime 4, Format(Now, "hh:mm:ss")
63 
64                    .Execute
65                End With
66                Set cmd = Nothing
67 
68            Else 'sms gagal dikirim
69                'update status sms -> 1
70 
71                'ini masih bisa dikembangkan lagi dengan menambah kolom max_jumlah_kirim di tabel sms_in
72                'jadi bisa diberi aturan sms yg gagal dikirim > 3x baru status smsnya diupdate menjadi 1
73                strSql = "UPDATE sms_in SET status = ?, no_ref = ? " & _
74                         "WHERE id = ?"
75                Set cmd = conn.CreateCommand(strSql)
76                With cmd
77                    .SetInt32 1, 1
78                    .SetInt32 2, objGsmOut.MessageReference
79                    .SetInt32 3, rsSend("id").Value
80 
81                    .Execute
82                End With
83                Set cmd = Nothing
84            End If
85 
86            Call Wait(5000)
87 
88            rsSend.MoveNext
89        Loop
90        Set objConstants = Nothing
91        Set objGsmOut = Nothing
92    End If
93 
94    Exit Sub
95errHandle:
96    Resume Next
97End Sub
Prosedur sendSMS akan mengolah sms masuk yg belum di proses (ditandai dengan status = 0), mengupdate statusnya menjadi 1 jika berhasil mengirimkan sms, kemudian menyimpannya ke tabel sms_out sebagai histori pengiriman sms.
1Public Function rep0to62(ByVal phoneNumber As String) As String
2    'fungsi untuk mengganti prefix 0 -> +62
3 
4    rep0to62 = phoneNumber
5    If Left(phoneNumber, 1) = "0" Then rep0to62 = "+62" & Right(phoneNumber, Len(phoneNumber) - 1)
6End Function
Sesuai namanya fungsi ini berguna untuk mengganti prefix nomor hp 0 menjadi +62 (kode indonesia).
Terakhir fungsi untuk memproses keyword sms yang masuk dan sekaligus sebagai balasan untuk sms keluar.
001Public Function getBalasanSms(ByVal keywordSms As String, ByVal phoneNumber As String) As String
002    Dim rs              As cRecordset
003    Dim param1          As String
004    Dim arrKeyword()    As String
005 
006    Dim prefix          As String
007    Dim nilai           As String
008    Dim nama            As String
009 
010    Dim tha             As String
011    Dim semester        As String
012 
013    If Len(keywordSms) > 0 Then
014        If InStr(1, keywordSms, "#") > 0 Then 'karakter # -> separator keyword
015            arrKeyword = Split(keywordSms, "#")
016            If Not (Len(arrKeyword(0)) > 0) Then
017                getBalasanSms = "Keyword sms salah"
018                Exit Function
019 
020            Else
021                'do nothing
022            End If
023 
024        Else
025            ReDim arrKeyword(0)
026            arrKeyword(0) = keywordSms
027        End If
028 
029    Else
030        getBalasanSms = "Keyword sms salah"
031        Exit Function
032    End If
033 
034    prefix = arrKeyword(0)
035    prefix = UCase$(prefix)
036 
037    If UBound(arrKeyword) > 0 Then param1 = arrKeyword(1) 'untuk contoh disini param1 bernilai nomor induk siswa
038 
039    'untuk pengembangan lebih lanjut tahun ajaran dan semester dibuat settingan tersendiri
040    tha = "2009/2010"
041    semester = 2
042 
043    Select Case prefix
044        Case "TGS"
045            'validasi nis siswa
046            If Not isValidNIS(param1) Then getBalasanSms = Replace(NIS_SALAH, "<nis>", param1): Exit Function
047 
048            'validasi no hp siswa
049            'nama sekolah sebaiknya disimpan didalam variabel
050            If Not isValidHPSiswa(param1, phoneNumber) Then
051                getBalasanSms = Replace(HP_UNREG, "<nama_sekolah>", "SMA Negeri Yogyakarta")
052                getBalasanSms = Replace(getBalasanSms, "<no_hp>", phoneNumber): Exit Function
053            End If
054 
055            strSql = "SELECT UPPER(nama) FROM siswa WHERE nis = '" & param1 & "'"
056            nama = CStr(dbGetValue(strSql, ""))
057 
058            'mulai proses pencarian nilai
059            strSql = "SELECT matapelajaran_kode, nilai " & _
060                     "FROM nilai_tugas " & _
061                     "WHERE siswa_nis = '" & param1 & "' AND tahun_ajaran = '" & tha & "' AND semester = " & semester & " " & _
062                     "ORDER BY matapelajaran_kode"
063            Set rs = conn.OpenRecordset(strSql)
064            If Not rs.EOF Then
065                Do While Not rs.EOF
066                    nilai = nilai & rs("matapelajaran_kode").Value & "=" & rs("nilai").Value & ", "
067                    rs.MoveNext
068                Loop
069            End If
070 
071            If Len(nilai) > 0 Then
072                nilai = Left(nilai, Len(nilai) - 2)
073                getBalasanSms = "Nilai tugas (" & nama & ") : " & nilai
074 
075            Else
076                getBalasanSms = "Nilai tugas (" & nama & ") sedang dalam proses pendataan"
077            End If
078 
079        Case "UH"
080            'validasi nis siswa
081            If Not isValidNIS(param1) Then getBalasanSms = Replace(NIS_SALAH, "<nis>", param1): Exit Function
082 
083            'validasi no hp siswa
084            'nama sekolah sebaiknya disimpan didalam variabel
085            If Not isValidHPSiswa(param1, phoneNumber) Then
086                getBalasanSms = Replace(HP_UNREG, "<nama_sekolah>", "SMA Negeri Yogyakarta")
087                getBalasanSms = Replace(getBalasanSms, "<no_hp>", phoneNumber): Exit Function
088            End If
089 
090            strSql = "SELECT UPPER(nama) FROM siswa WHERE nis = '" & param1 & "'"
091            nama = CStr(dbGetValue(strSql, ""))
092 
093            'mulai proses pencarian nilai
094            strSql = "SELECT matapelajaran_kode, nilai " & _
095                     "FROM nilai_ulangan " & _
096                     "WHERE siswa_nis = '" & param1 & "' AND tahun_ajaran = '" & tha & "' AND semester = " & semester & " " & _
097                     "ORDER BY matapelajaran_kode"
098            Set rs = conn.OpenRecordset(strSql)
099            If Not rs.EOF Then
100                Do While Not rs.EOF
101                    nilai = nilai & rs("matapelajaran_kode").Value & "=" & rs("nilai").Value & ", "
102                    rs.MoveNext
103                Loop
104            End If
105 
106            If Len(nilai) > 0 Then
107                nilai = Left(nilai, Len(nilai) - 2)
108                getBalasanSms = "Nilai ulangan (" & nama & ") : " & nilai
109 
110            Else
111                getBalasanSms = "Nilai ulangan (" & nama & ") sedang dalam proses pendataan"
112            End If
113 
114        Case Else
115            getBalasanSms = "Keyword sms salah"
116    End Select
117End Function