Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 6

CODING FORM JOB

Option Explicit

Option Compare Text

Dim TB1(), TB2(), TB3(), DATA1(), DATA2(), ER As Object, WIN As String, S As Variant

Private Sub CMBJENIS_Change()

Dim Evn As String

Dim d2 As Object

Dim I As Long

If CMBJENIS.ListIndex = -1 And IsError(Application.Match(CMBJENIS, DATA1, 0)) Then

Set ER = CreateObject("Scripting.Dictionary")

WIN = CMBJENIS & "*"

For Each S In DATA1:

If S Like WIN Then ER(S) = ""

Next S

CMBJENIS.List = ER.keys

CMBJENIS.DropDown

Else

Evn = CMBJENIS

If Evn = "" Then Exit Sub

Set d2 = CreateObject("Scripting.Dictionary")

For I = LBound(DATA2) To UBound(DATA2)

If DATA1(I) = Evn Then d2(DATA2(I)) = ""

Next I

TB1 = d2.keys

Me.CMBURAIAN.List = TB1

Me.CMBURAIAN.SetFocus
End If

End Sub

Private Sub CMBURAIAN_Change()

Dim CariData As Object

Set CariData = Sheet2.Range("C6:C100000").Find(What:=Me.CMBURAIAN.Value, LookIn:=xlValues)

Me.TXTSATUAN.Value = CariData.Offset(0, 1).Value

Me.TXTTARIF.Value = CariData.Offset(0, 2).Value

End Sub

Private Sub CmdAdd_Click()

Dim DJOB As Object

Dim UpdateNilaiJob As Object

Set DJOB = Sheet5.Range("A20000").End(xlUp)

Set UpdateNilaiJob = Sheet3.Range("B6:B1000000").Find(What:=FormRAB.TXTIDPROJECT.Value,


LookIn:=xlValues)

If Me.CmdAdd.Caption = "Add" Then

If Me.CMBJENIS.Value = "" _

Or Me.CMBURAIAN.Value = "" _

Or Me.TXTSATUAN.Value = "" _

Or Me.TXTTARIF.Value = "" _

Or Me.TXTVOLUME.Value = "" _

Or Me.TXTTOTALTARIF.Value = "" Then

Call MsgBox("Harap isi data job dengan lengkap", vbInformation, "Data Job")

Else

DJOB.Offset(1, 0).Value = "=ROW()-ROW($A$5)"

DJOB.Offset(1, 1).Value = FormRAB.TXTIDPROJECT.Value

DJOB.Offset(1, 2).Value = FormRAB.TXTNAMAPROJECT.Value


DJOB.Offset(1, 3).Value = Me.CMBJENIS.Value

DJOB.Offset(1, 4).Value = Me.CMBURAIAN.Value

DJOB.Offset(1, 5).Value = Me.TXTSATUAN.Value

DJOB.Offset(1, 6).Value = Me.TXTTARIF.Value

DJOB.Offset(1, 7).Value = Me.TXTVOLUME.Value

DJOB.Offset(1, 8).Value = Me.TXTTOTALTARIF.Value

Call CariJob

Call HitungNilai

UpdateNilaiJob.Offset(0, 5).Value = FormRAB.TXTNILAI.Value

Call MsgBox("Data project berhasil ditambah", vbInformation, "Project")

Me.CMBJENIS.Value = ""

Me.CMBURAIAN.Value = ""

Me.TXTSATUAN.Value = ""

Me.TXTTARIF.Value = ""

Me.TXTVOLUME.Value = ""

Me.TXTTOTALTARIF.Value = ""

End If

Else

Call UpdatePekerjaan

End If

End Sub

Private Sub CariJob()

On Error GoTo salah

Dim iRow As Long

Dim DCARIJOB As Object

Set DCARIJOB = Sheet5

Sheet5.Range("K5").Value = "ID Project"

Sheet5.Range("K6").Value = FormRAB.TXTIDPROJECT.Value
DCARIJOB.Range("A5").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _

Sheet5.Range("K5:K6"), CopyToRange:=Sheet5.Range("M5:U5"), Unique:=False

iRow = Sheet5.Range("M" & Rows.Count).End(xlUp).Row

If Application.WorksheetFunction.CountA(Sheet5.Range("M5:M999999")) = 0 Then

FormRAB.TABELJOB.RowSource = ""

Call MsgBox("Data tidak ditemukan", vbInformation, "Cari Data")

Else

FormRAB.TABELJOB.RowSource = "JOB!M6:U" & iRow

End If

Exit Sub

salah:

Call MsgBox("Maaf Data tidak ditemukan", vbInformation, "Cari Data")

End Sub

Private Sub UpdatePekerjaan()

Application.ScreenUpdating = False

'Perintah membuat Sumber data yang diubah

Dim UbahData As Object

Dim UpdateNilaiJob As Object

Set UpdateNilaiJob = Sheet3.Range("B6:B1000000").Find(What:=FormRAB.TXTIDPROJECT.Value,


LookIn:=xlValues)

'Perintah mengecek apakah ada data yang diubah

FormRAB.TABELJOB.Value = ""

If Me.CMBJENIS.Value = "" Then

Call MsgBox("Untuk mengubah Data, Pilih data terlebih dahulu", vbInformation, "Ubah Data")

Else

Set UbahData = Sheet5.Range("A6:A900000").Find(What:=FormRAB.TXTNOMORJOB.Value,


LookIn:=xlValues)

'Perintah mengubah data dari kolom pertama

UbahData.Offset(0, 3).Value = Me.CMBJENIS.Value


UbahData.Offset(0, 4).Value = Me.CMBURAIAN.Value

UbahData.Offset(0, 5).Value = Me.TXTSATUAN.Value

UbahData.Offset(0, 6).Value = Me.TXTTARIF.Value

UbahData.Offset(0, 7).Value = Me.TXTVOLUME.Value

UbahData.Offset(0, 8).Value = Me.TXTTOTALTARIF.Value

'Perintah memunculkan pesan bahwa data berhasil diubah

Call MsgBox("Data berhasil diubah", vbInformation, "Ubah Data")

Call CariJob

Call HitungNilai

UpdateNilaiJob.Offset(0, 5).Value = FormRAB.TXTNILAI.Value

'Perintah membersihkan textbox

Me.CMBJENIS.Value = ""

Me.CMBURAIAN.Value = ""

Me.TXTSATUAN.Value = ""

Me.TXTTARIF.Value = ""

Me.TXTVOLUME.Value = ""

Me.TXTTOTALTARIF.Value = ""

End If

End Sub

Private Sub TXTVOLUME_Change()

On Error Resume Next

Me.TXTTOTALTARIF.Value = Val(Me.TXTTARIF.Value) * Val(Me.TXTVOLUME.Value)

End Sub

Private Sub HitungNilai()

Dim MySum As Double

Dim r As Long

MySum = 0

With FormRAB.TABELJOB
For r = 0 To .ListCount - 1

MySum = MySum + .List(r, 8)

Next r

End With

FormRAB.TXTNILAI.Value = MySum

End Sub

Private Sub UserForm_Initialize()

Dim X As Variant

DATA1 = Application.Transpose(Range("JENIS"))

DATA2 = Application.Transpose(Range("URAIAN"))

Set ER = CreateObject("Scripting.Dictionary")

For Each X In DATA1

ER(X) = ""

Next X

Me.CMBJENIS.List = ER.keys

End Sub

You might also like