Ini hanya buat 1 command Mas, ada sekitar 23 command. Ini untuk Private Sub cmdL_Click() yang digunakan/diganti-ganti: sKet = "Berbentuk seperti rambut ikal. Pada tangan %s memiliki arus alur ke%s." sfile1 = "C:\Tipe Jari\%sL1.jpg" sfile2 = "C:\Tipe Jari\%sL2.jpg"If LenB(lblFolder.Caption) <> 0 Then lblNamaJari.Caption = "Loop" sJari = lblJari.Caption lNo = CLng(Mid$(sJari, 2, 1)) - 1 If Left$(sJari, 1) = "R" Then lSisi = 1 sSisi = Left$(sJari, 1) sSisiTeks = "kanan" Else lSisi = 0 sSisi = vbNullString sSisiTeks = "kiri" End If 'pada bagian diatasga tau kode mana yang mengatakan bahwa lblL1 - lblL5 dan lblR1 - lblR5 memiliki nilai "L"
Misal command ke-dua Private Sub cmdRL_Click(), ini kebalikan dari cmdL, maka bagian yang diganti menjadi: sKet = "Berbentuk kruwel-kruwel atau gimana. Pada tangan %s memiliki arus alur keKANAN." sfile1 = "C:\Tipe Jari\%sRL1.jpg" sfile2 = "C:\Tipe Jari\%sRL2.jpg" lblNamaJari.Caption = "Radial Loop" lblL1 - lblL5 dan lblR1 - lblR5.Caption= "RL" sKet yg cmdRL ini, keterangannya kebalikan dari cmdL Misal command ke-tiga Private Sub cmdTA_Click(), sKet-nya beda lagi, tidak terpengaruh "kanan" dan "kiri" sKet = "Turunan dari tipe Arch menuju Loop." sfile1 = "C:\Tipe Jari\%sTA1.jpg" sfile2 = "C:\Tipe Jari\%sTA2.jpg" lblNamaJari.Caption = "Tented Arch"lblL1 - lblL5 dan lblR1 - lblR5.Caption = "TA" Masih ada: Private Sub cmdPE_Click() Private Sub cmdPE-R_Click() Private SubcmdPE-DL_Click() dll Trimakasih ________________________________ From: Mr. Kid <[email protected]> To: BeExcel <[email protected]> Sent: Saturday, March 30, 2013 4:02 PM Subject: Re: [belajar-excel] Penyederhanaan kode VBA yg berulang-ulang Andaikan object akan terus digunakan sampai userform ditutup, maka proses set object array bisa dilakukan diawal (saat initialize misalnya). Untuk kebutuhan ini, maka variabel dinaikkan scope-nya dari scope prosedur menjadi scope module. Contoh : Pada userform (lembar code userform) beri deklarasi veriabel seperti baris dibawah ini, sebelum baris deklarasi prosedur pertama yang ada : private oLbl(1,4) as label, oTxt(1,4) as textbox Kemudian, karena ada beberapa variabel yang akan selalu tetap nilainya sepanjang userform masih bekerja, maka diberi deklarasi variabel yang diset konstan. Misal variabel sKet, sFile1, sFile2 Biasanya, beginilah cara penggunaan variabel yang diset konstan nilainya. private const sKet as string = "Berbentuk seperti rambut ikal. Pada tangan %s memiliki arus alur ke%s." private const sFile1 as string = "C:\Tipe Jari\%sL1.jpg" private const sFile2 as string = "C:\Tipe Jari\%sL2.jpg" proses set object dilakukan pada event initialize userform : private sub userform_initialize() Set oLbl(0,0)=lblL1:Set oLbl(0,1)=lblL2:Set oLbl(0,2)=lblL3:Set oLbl(0,3)=lblL4:Set oLbl(0,4)=lblL5 Set oLbl(1,0)=lblR1:Set oLbl(1,1)=lblR2:Set oLbl(1,2)=lblR3:Set oLbl(1,3)=lblR4:Set oLbl(1,4)=lblR5 Set oTxt(0,0)=txtL1:Set oTxt(0,1)=txtL2:Set oTxt(0,2)=txtL3:Set oTxt(0,3)=txtL4:Set oTxt(0,4)=txtL5 Set oTxt(1,0)=txtR1:Set oTxt(1,1)=txtR2:Set oTxt(1,2)=txtR3:Set oTxt(1,3)=txtR4:Set oTxt(1,4)=txtR5 end sub nanti pada event click suatu commandbutton bisa berisi : Dim sJari As String,sSisi As String,sSisiTeks As String Dim lSisi As Long,lNo As Long If LenB(lblFolder.Caption) <> 0 Then lblNamaJari.Caption = "Loop" sJari = lblJari.Caption lNo = CLng(Mid$(sJari, 2, 1)) - 1 If Left$(sJari, 1) = "R" Then lSisi = 1 sSisi = Left$(sJari, 1) sSisiTeks = "kanan" Else lSisi = 0 sSisi = vbNullString sSisiTeks = "kiri" End If lblKeterangan.Caption = Replace$(sKet, "%s", sSisiTeks) imgC1.Picture = LoadPicture(vbNullString) imgC1.Picture = LoadPicture(Replace$(sfile1, "%s", sSisi)) imgC2.Picture = LoadPicture(vbNullString) imgC2.Picture = LoadPicture(Replace$(sfile2, "%s", sSisi)) oLbl(lSisi, lNo).Caption = Left$(sJari, 1) oTxt(lSisi, lNo).SetFocus Else MsgBox ("Tentukan Folder Terlebih Dahulu") End If Wassalam, Kid. 2013/3/30 lapendosol opik <[email protected]> > >Trimakasih banyak Mas Kid, > >Kode aslinya ada 10, L1F - L5F dan R1F - R5F >ImgBoxnya ada 2, imgC1 dan imgC2 >Terdapat juga lblNamaJari, tapi ini sifatnya fix, tidak berubah meskipun >berganti L1F sampai R5F >Tujuan saya biar sederhana, termasuk contoh kasusnya jadi saya sederhanakan. >Berikut solusi dari Mas Kid yg udah disesuaikan data aslinya, kalo ada yg >kurang tepat mohon bersedia mengkoreksi lagi: > > >Dim oLbl(1,4)As Control,oTxt(1,4)As Control 'ganti control dengan >msforms.label atau msforms.textbox jika object ada di worksheet >Dim sJari As String,sSisi As String,sSisiTeks As String >Dim lSisi As Long,lNo As Long > >Set oLbl(0,0)=lblL1:Set oLbl(0,1)=lblL2:Set oLbl(0,2)=lblL3:Set >oLbl(0,3)=lblL4:Set oLbl(0,4)=lblL5 >Set oLbl(1,0)=lblR1:Set oLbl(1,1)=lblR2:Set oLbl(1,2)=lblR3:Set >oLbl(1,3)=lblR4:Set oLbl(1,4)=lblR5 >Set oTxt(0,0)=txtL1:Set oTxt(0,1)=txtL2:Set oTxt(0,2)=txtL3:Set >oTxt(0,3)=txtL4:Set oTxt(0,4)=txtL5 >Set oTxt(1,0)=txtR1:Set oTxt(1,1)=txtR2:Set oTxt(1,2)=txtR3:Set >oTxt(1,3)=txtR4:Set oTxt(1,4)=txtR5 >sKet = "Berbentuk seperti rambut ikal. Pada tangan %s memiliki arus alur ke%s." >sfile1 = "C:\Tipe Jari\%sL1.jpg" >sfile2 = "C:\Tipe Jari\%sL2.jpg" > >If LenB(lblFolder.Caption) <> 0 Then > lblNamaJari.Caption = "Loop" > sJari = lblJari.Caption > lNo = CLng(Mid$(sJari, 2, 1)) - 1 > If Left$(sJari, 1) = "R" Then > lSisi = 1 > sSisi = Left$(sJari, 1) > sSisiTeks = "kanan" > Else > lSisi = 0 > sSisi = vbNullString > sSisiTeks = "kiri" > End If > lblKeterangan.Caption = Replace$(sKet, "%s", sSisiTeks) > imgC1.Picture = LoadPicture(vbNullString) > imgC1.Picture = LoadPicture(Replace$(sfile1, "%s", sSisi)) > imgC2.Picture = LoadPicture(vbNullString) > imgC2.Picture = LoadPicture(Replace$(sfile2, "%s", sSisi)) > oLbl(lSisi, lNo).Caption = Left$(sJari, 1) > oTxt(lSisi, lNo).SetFocus > >Else > MsgBox ("Tentukan Folder Terlebih Dahulu") >End If > > >Wassalam > > > > >________________________________ > From: Mr. Kid <[email protected]> >To: BeExcel <[email protected]> >Sent: Saturday, March 30, 2013 2:07 PM >Subject: Re: [belajar-excel] Penyederhanaan kode VBA yg berulang-ulang > > > > >Coba : > >dim oLbl(1,2) as control,oTxt(1,2) as control 'ganti control dengan >msforms.label atau msforms.textbox jika object ada di worksheet > >dim sKet as string, sFile as string, sJari as string,sSisi as string,sSisiTeks >as string > >dim lSisi as long, lNo as long > > >set olbl(0,0)=lblL1:set olbl(0,1)=lblL2:set olbl(0,2)=lblL3 >set olbl(1,0)=lblr1:set olbl(1,1)=lblr2:set olbl(1,2)=lblr3 >set otxt(0,0)=txtL1:set otxt(0,1)=txtL2:set otxt(0,2)=txtL3 >set otxt(1,0)=txtr1:set otxt(1,1)=txtr2:set otxt(1,2)=txtr3 > >sket="Berbentuk seperti rambut ikal. Pada tangan %s memiliki arus alur ke%s." >sfile="C:\Tipe Jari\%sL1.jpg" > >If lenb(lblFolder.Caption) <>0 Then > > sjari=lblJari.Caption > > lno=clng(mid$(sjari,2,1))-1 > > if left$(sjari,1)="R" then > > lsisi=1 > ssisi=left$(sjari,1) > > ssisiteks="kanan" > > else > > lsisi=0 > > ssisi=vbnullstring > > ssisiteks="kiri" > > endif > lblKeterangan.Caption = replace$(sket,"%s",ssisiteks) > imgC1.Picture = LoadPicture(vbNullString) > imgC1.Picture = LoadPicture(replace$(sfile,"%s",ssisi)) > > olbl(lsisi,lno).caption=left$(sjari,1) > > otxt(lsisi,lno).setfocus > >else > MsgBox ("Tentukan Folder Terlebih Dahulu") > >endif > > > > >Wassalam, >Kid. > > > >2013/3/30 lapendosol opik <[email protected]> > > >> >>Dear master excel >>Saya memiliki kode VBA, dimana isi tiap beberapa baris adalah sama dengan >>lainnya. >>Bagaimana cara menyederhanakan kode VBA tersebut agar lebih simple, berikut >>kode VBAnya: >> >> >>Private Sub cmdL_Click() >>If lblFolder.Caption = "" Then >>MsgBox ("Tentukan Folder Terlebih Dahulu") >>ElseIf lblJari.Caption = "L1F" Then >> lblKeterangan.Caption = "Berbentuk seperti rambut ikal. Pada tangan kiri >>memiliki arus alur kekiri." >> imgC1.Picture = LoadPicture(vbNullString) >> imgC1.Picture = LoadPicture("C:\Tipe Jari\L1.jpg") >> lblL1.Caption = "L" >> txtL1.SetFocus >>ElseIf lblJari.Caption = "L2F" Then >> lblKeterangan.Caption = "Berbentuk seperti rambut ikal. Pada tangan kiri >>memiliki arus alur kekiri." >> imgC1.Picture = LoadPicture(vbNullString) >> imgC1.Picture = LoadPicture("C:\Tipe Jari\L1.jpg") >> lblL2.Caption = "L" >> txtL2.SetFocus >>ElseIf lblJari.Caption = "L3F" Then >> lblKeterangan.Caption = "Berbentuk seperti rambut ikal. Pada tangan kiri >>memiliki arus alur kekiri." >> imgC1.Picture = LoadPicture(vbNullString) >> imgC1.Picture = LoadPicture("C:\Tipe Jari\L1.jpg") >> lblL3.Caption = "L" >> txtL3.SetFocus >> >>ElseIf lblJari.Caption = "R1F" Then >> lblKeterangan.Caption = "Berbentuk seperti rambut ikal. Pada tangan kanan >>memiliki arus alur kekanan." >> imgC1.Picture = LoadPicture(vbNullString) >> imgC1.Picture = LoadPicture("C:\Tipe Jari\RL1.jpg") >> lblR1.Caption = "L" >> txtR1.SetFocus >>ElseIf lblJari.Caption = "R2F" Then >> lblKeterangan.Caption = "Berbentuk seperti rambut ikal. Pada tangan kanan >>memiliki arus alur kekanan." >> imgC1.Picture = LoadPicture(vbNullString) >> imgC1.Picture = LoadPicture("C:\Tipe Jari\RL1.jpg") >> lblR2.Caption = "L" >> txtR2.SetFocus >>ElseIf lblJari.Caption = "R3F" Then >> lblKeterangan.Caption = "Berbentuk seperti rambut ikal. Pada tangan kanan >>memiliki arus alur kekanan." >> imgC1.Picture = LoadPicture(vbNullString) >> imgC1.Picture = LoadPicture("C:\Tipe Jari\RL1.jpg") >> lblR3.Caption = "L" >> txtR3.SetFocus >>End If >>End Sub >> >> >>Yang berwarna ungu adalah bagian yang diulang-ulang untuk tangan kiri, dan yang berwarna hijau adalah bagian yang diulang-ulang untuk tangan kanan. >>Mohon pencerahannya untuk kasus seperti ini >>Sebelumnya saya ucapkan banyak terimakasih >>Wassalam >> > > >

