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 sKet As String,sfile1 As String,sfile2 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(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
>

 

Kirim email ke