Monday, December 10, 2012

VB6 Code - Memahami KeyWord ByVal dan ByRef

Di bawah ini merupakan contoh kode sehingga kita bisa memahami KeyWord ByVal dan ByRef. Untuk keperluan ini copy dan pastekan kode di bawah ini:

Option Explicit

Private Sub Form_Load()
Dim iNumber As Integer
iNumber = 1
MsgBox TampilkanPesan(iNumber)
End Sub

Function TampilkanPesan(ByVal Pesan As String) As String
TampilkanPesan = Pesan
End Function
Coba bedakan dengan yang ini
Fungsinya akan menampilkan error yakni argumen yang tidak sama (cocok/mismatch)
Private Sub Form_Load()
Dim iNumber As Integer
iNumber = 1
MsgBox TampilkanPesan(iNumber)
End Sub

Function TampilkanPesan(Pesan As String) As String
TampilkanPesan = Pesan
End Function
Untuk mengatasi error di atas maka cocokan saja argumennya yakni
dengan mengubah variable iNumber yang asalnya integer menjadi String
Private Sub Form_Load()
Dim iNumber As String
iNumber = 1
'sekarang tidak akan terjadi error karena type datanya sama yakni string
MsgBox TampilkanPesan(iNumber)
End Sub

Function TampilkanPesan(Pesan As String) As String
TampilkanPesan = Pesan
End Function
Atau Anda beri statement ByVal pada argumen fungsinya
Private Sub Form_Load()
'Dim iNumber As String
iNumber = 1
'sekarang tidak akan terjadi error karena type datanya sama yakni string
MsgBox TampilkanPesan(iNumber)
End Sub

Function TampilkanPesan(ByVal Pesan As String) As String
TampilkanPesan = Pesan
End Function
Maka kesimpulannya:
  • Secara default Visual Basic 6.0 telah menyertakan ByRef pada argumen walaupun kita tidak menuliskannya, terkecuali secara explicit kita menuliskan ByVal pada argumen tersebut.
  • Penggunaan ByVal akan memaksa sebuah argumen untuk dijadikan data type tertentu sebagai contoh:
  • ByVal Pesan As String maka pesan akan dipaksa untuk memiliki data type string.
  • Penggunaan KeyWord ByVal menjadikan sebuah argumen tidak lagi memiliki hubungan dengan variable yang melewatinya. Sebagai contoh:
    Dim i as integer
i = 1
Msgbox TampilkanPesan(i)
Msgbox i 'maka i disini, tetap saja memiliki nilai satu.

Function TampilkanPesan(ByVal Pesan As String) As String
Pesan = 2
TampilkanPesan = Pesan
End Function