Option ExplicitCoba bedakan dengan yang ini
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
Fungsinya akan menampilkan error yakni argumen yang tidak sama (cocok/mismatch)
Private Sub Form_Load()Untuk mengatasi error di atas maka cocokan saja argumennya yakni
Dim iNumber As Integer
iNumber = 1
MsgBox TampilkanPesan(iNumber)
End Sub
Function TampilkanPesan(Pesan As String) As String
TampilkanPesan = Pesan
End Function
dengan mengubah variable iNumber yang asalnya integer menjadi String
Private Sub Form_Load()Atau Anda beri statement ByVal pada argumen fungsinya
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
Private Sub Form_Load()Maka kesimpulannya:
'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
- 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