You are on page 1of 8

Dim Data1, Data2, Operator, Hasil

Dim HapusScreen As Boolean

Dim TitikDesimal As Boolean

'Jika tombol <<sqrt>> ditekan

Private Sub Akar_Click()

'jika telah menekan tombol <<=>> atau <<Ans>>

If (Data1 = " " And Operator = " " And _

Data2 = " " And Hasil <> " ") Then

If Hasil > 0 Then

Hasil = Hasil ^ 0.5

Screen.Text = Format(Hasil)

HapusScreen = True

End If

'jika telah menekan angka tetapi tombol operator belum maka

ElseIf Data1 <> " " And Operator = " " And Data2 = " " Then

If Data1 > 0 Then

Data1 = Data1 ^ 0.5

Screen.Text = Data1

HapusScreen = True

End If

'jika telah menekan angka dan tombol operator

ElseIf Data1 <> " " And Operator <> " " And Data2 <> " " Then

If Data2 > 0 Then

Data2 = Data2 ^ 0.5

Screen.Text = Data1 & Operator & Data2


HapusScreen = True

End If

End If

End Sub

Private Sub Answer_Click()

If Data1 <> " " And Operator <> " " And Data2 <> " " Then

Call Menghitung

End If

End Sub

Private Sub Pangkatdua_Click()

'jika telah menekan tombol <<=>> atau <<Ans>>

If (Data1 = " " And Operator = " " And _

Data2 = " " And Hasil <> " ") Then

Hasil = Hasil ^ 2

Screen.Text = Hasil

HapusScreen = True

'jika telah menekan angka tetapi tombol operator belum maka

ElseIf Data1 <> " " And Operator = " " And Data2 = " " Then

Data1 = Data1 ^ 2

Screen.Text = Data1

'jika telah menekan angka dan tombol operator

ElseIf Data1 <> " " And Operator <> " " And Data2 <> " " Then

Data2 = Data2 ^ 2

Screen.Text = Data1 & Operator & Data2

End If
End Sub

Private Sub satuper_Click()

If (Data1 = " " And Operator = " " And _

Data2 = " " And Hasil <> " ") Then

Hasil = 1 / Hasil

Screen.Text = Format(Hasil)

ElseIf Data1 <> " " And Operator = " " And Data2 = " " Then

Data1 = 1 / Data1

Screen.Text = Data1

ElseIf Data1 <> " " And Operator <> " " And Data2 <> " " Then

Data2 = 1 / Data2

Screen.Text = Data1 & Operator & Data2

End If

End Sub

Private Sub Desimal_Click()

If TitikDesimal Then

If Operator = " " Then 'menekan titik Desimal di data1

Data1 = Data1 + "."

Else 'menambahkan titik Dseimal di Data2

Data2 = Data2 + "."

End If

Screen.Text = Screen.Text + "."

TitikDesimal = False

End If

End Sub
Sub Persiapan()

Operator = " "

Data1 = " "

Data2 = " "

Hasil = " "

HapusScreen = False

TitikDesimal = True

Screen.Text = " "

End Sub

Private Sub Form_Load()

Call Persiapan

Frame1.Caption = " "

Frame2.Caption = " "

Frame3.Caption = " "

End Sub

Sub Evaluasi(Tanda)

'Proses umum menunggu Data2

If Data1 = " " And Operator = " " Then

If Hasil = " " Then

Data1 = Screen.Text

Else

Data1 = Format(Hasil)

Screen.Text = Data1

End If

'Operator ketik dua kali


ElseIf Data1 <> " " And Operator <> " " And Data2 <> " " Then

Menghitung

Screen.Text = Format(Hasil)

Data1 = Format(Hasil)

Data2 = " "

End If

Operator = Tanda

HapusScreen = False

TitikDesimal = True

TitikDesimal = True

Screen.Text = Screen.Text + Tanda

End Sub

Sub HapusData()

Call Persiapan

End Sub

Sub Menghitung()

HapusScreen = True

On Error GoTo ErrorHandler

A = Val(Data1)

B = Val(Data2)

Select Case Operator

Case "+": Hasil = A + B

Case "-": Hasil = A - B

Case "*": Hasil = A * B

Case "/": Hasil = A / B


End Select

Data1 = " "

Data2 = " "

Operator = " "

Screen.Text = Format(Hasil)

Exit Sub

ErrorHandler:

MsgBox vbCrLf & Err.Description, , "Calculator mendeteksi ERROR sbb :"

End Sub

Private Sub angka_Click(index As Integer)

If HapusScreen Then

Call HapusData

End If

If Operator = " " Then

Data1 = Data1 + angka(index).Caption

Else

Data2 = Data2 + angka(index).Caption

End If

Screen.Text = Screen.Text + angka(index).Caption

End Sub

'Aktif Jika tombol <</>> ditekan

Private Sub Bagi_Click()

If Data1 <> " " Or Hasil <> " " Then Call Evaluasi("/")

End Sub
'Aktif Jika tombol <<x>> ditekan

Private Sub Kali_Click()

If Data1 <> " " Or Hasil <> " " Then Call Evaluasi("*")

End Sub

'Aktif Jika tombol <<->> ditekan

Private Sub Kurang_Click()

If Data1 <> " " Or Hasil <> " " Then Call Evaluasi("-")

End Sub

'Aktif Jika tombol <<+>> ditekan

Private Sub Tambah_Click()

If Data1 <> " " Or Hasil <> " " Then Call Evaluasi("+")

End Sub

'Aktif Jika tombol <<Del>> ditekan

Private Sub Hapus_Click()

Call HapusData

End Sub

'Aktif Jika tombol <<+/->> ditekan

Private Sub RubahTanda_Click(index As Integer)

If Operator = " " Then

Screen.Text = -1 * Val(Screen.Text)

Data1 = Screen.Text

End If

End Sub

'Aktif Jika tombol <<=>> ditekan

Private Sub Samadengan_Click()


If Data1 <> " " And Operator <> " " And Data2 <> " " Then

Call Menghitung

End If

End Sub

'Aktif Jika tombol <<Ans>> ditekan

You might also like