Bagaimana Mengkonversi Bilangan Yang lebih dari 1 byte di VBA Excel

Bagaimana Mengkonversi Bilangan Lebih dari 1 byte di Ms.Excel ?

Kali ini saya coba berbagi function VBA yang dapat digunakan untuk mengkonversi bilangan yang lebih besar dari 1 byte di Ms. Excel.

Seperti yang telah kita ketahui bahwa pada fungsi konversi yang telah disediakan oleh Excel, hanya mampu mengkonversi biner dengan jumlah digit 10 digit bit. Hal ini tentu menyulitkan kita bila jumlah digit bit yang kita konversi lebih dari 10 digit, misalnya 2 byte (16 bit) atau diatasnya.

Hal ini dapat kita selesaikan dengan menambahkan fungsi-fungsi konversi pada modul VBA yang telah disediakan oleh Office.
Baik, langsung saja kita mulai...langkah-langkah yang kita lakukan adalah :
1. Buka microsoft Excel
2. Aktifkan lembar VBA (aktifkan halaman lunch visual basic editor) atau tekan tombol Alt + F11
3. Klik kanan pada bagian VBAPRoject (Book1)
4. Pilih Insert, kemudian pilih Modul


    Maka akan muncul jendela visual basic editor seperti di bawah ini :

5. Silahkan ketik beberapa function berikut ini pada modul1:
    a. Function untuk konversi decimal ke biner :

    Function RubahDecKeBiner(ByVal jlhDec As Variant, Optional jlhBit As Variant)     _As String
         RubahDecKeBiner = ""
         jlhDec = CDec(jlhDec)
         Do While jlhDec <> 0
            RubahDecKeBiner = Trim$(str$(jlhDec - 2 * Int(jlhDec / 2))) _
            & RubahDecKeBiner
            jlhDec = Int(jlhDec / 2)
         Loop
         
         If Not IsMissing(jlhBit) Then
           If Len(RubahDecKeBiner) > jlhBit Then
             jlhDec = "Terjadi Kesalahan - Nilai terlalu besar"
           Else
             jlhDec = Right$(String$(jlhBit, "0") & jlhDec, jlhBit)
           End If
           
        End If
        Dim xLengthBin, TambahBit As Integer
        xLengthBin = Len(RubahDecKeBiner)
        Dim strBaru As String
        
        If xLengthBin < 32 Then
            TambahBit = 32 - xLengthBin
            strBaru = String(TambahBit, "0")
            RubahDecKeBiner = strBaru & RubahDecKeBiner
        End If
     End Function

    b. Function untuk mengkonversi Biner ke Desimal :

        Function KonvertBinKeDec(BinaryString As String) As Variant
       Dim X As Integer
       For X = 0 To Len(BinaryString) - 1
          KonvertBinKeDec = CDec(KonvertBinKeDec) + Val(Mid(BinaryString, _
          Len(BinaryString) - X, 1)) * 2 ^ X
       Next
    End Function

    c. Fungsi untuk XOR biner :

        Public Function XOR_biner(b1, b2) As String
            Dim len_b1
            Dim len_b2
            Dim len_diff
            Dim i
            Dim bit1
            Dim bit2

            ' pengecekan jlh biner, jika tidak sama maka ditambahakn bit 0 
            ' pada awal biner yang lebih pendek 

            len_b1 = Len(b1)
            len_b2 = Len(b2)
            len_diff = len_b1 - len_b2

            Select Case len_diff
               Case Is < 0
                 ' b2 bila lebih banyak
                   b1 = String(Abs(len_diff), "0") & b1
               Case Is = 0
                 ' bila jumlahnya sama
              Case Is > 0
                 ' b1 bila lebih banyak
                  b2 = String(len_diff, "0") & b2
            End Select

           XOR_biner = ""
          For i = Len(b2) To 1 Step -1
                bit1 = CInt(Mid(b1, i, 1))
                bit2 = CInt(Mid(b2, i, 1))
                XOR_biner = CInt(bit1 Xor bit2) & XOR_biner
          Next i
      End Function

    d. Fungsi untuk membalikkan penulisan string bit (dari kanan ke kiri)

        Function BalikkanBiner(Str As String) As String
              BalikkanBiner = StrReverse(Trim(Str))
        End Function
   
6. Setelah anda copas coding function di atas, maka silahkan anda simpan document excel anda 
    dengan save as type = Excel Macro - Enabled Workbook
7. Silahkan konversi bilangan yang anda inginkan dengan function yang telah dibuat pada VBA tadi
    dengan formula yang diawali tanda = diikuti oleh nama function pada VBA.

selamat mencba...., semoga berhasil......

Tidak ada komentar: