Dear Mr. Kid,Assalamuallaikum Wr.Wb.
Terima kasih banyak atas bantuanya, tetapi saya masih mendapatkan kesulitan 
dalam melakukan proses pemanggilan transform code-nya dan selalu error.


Private Sub Worksheet_Change(ByVal Target As Range)
   Dim rng As Range, lRow As Long
    If Not Intersect(Target, Range("C:C")) Is Nothing Then      'cek yang 
berubah beririsan dengan kolom C
        Application.EnableEvents = False   'cegah Excel untuk responsif 
terhadap perilaku
        On Error Resume Next           'lewati error yang terjadi
        For Each rng In Intersect(Target, Range("C:C"))   'di setiap cells yang 
berubah di kolom C
               lRow = rng.Row      'simpan baris
                 Cells(lRow, 3).Value = TransformCode.Cells(lRow, 3).Offset(0, 
-1).Resize(1, 2)
        Next rng    'ke range yang berubah berikutnya
        On Error GoTo 0            'kembalikan setting trap error ke default
        Application.EnableEvents = True   'excel boleh responsif lagi
    End If  'selesai cek
End Sub


Saya dapatkan error di bagian yang merah tersebut. Kira-kira kesalahannya ada 
dimana ya?
Mohon bantuannya sekali lagi.
Terima kasih
Edo







    On Saturday, November 28, 2015 10:00 PM, "'Mr. Kid' [email protected] 
[belajar-excel]" <[email protected]> wrote:



     Wa'alaikumussalam wr wb



Hai Edo,


*** sesuaikan dengan keadaan setempat jika berbeda dengan preview file lampiran 
milik Pak Edo
Pada sebuah general module, buat prosedur berikut : (misal diberi nama 
TransformCode)
public sub TransformCode( rngProc as range )
    dim lChar as long, sDate as string, sCode as string


    with rngproc    'kerja di range inputan rngProc
          sdate=.cells(1).value2      'simpan nilai asli tanggal inputan ke 
sdate
          scode=.cells(2).value2     'simpan nilai asli kode inputan ke scode
          lchar=1                          'karakter ke-1   -> mulainya proses 
loop


          'dapatkan angka pertama (max di karakter ke-6 alias ada ruang max 5 
karakter untuk header kode)
          do until isnumeric( mid( scode , lchar , 1 ) ) or lchar>6    'cek dah 
nemu angka belum atau karakter diproses dah lebih dari 6     
                  lchar=lchar+1        'pindah ke karakter berikutnya
          loop    'ke proses loop dengan nilai karakter yang baru
         
          'tulis ke cells ke-2 dari inputan (posisi cell kode)
               'diawali petik satu ( ' )
               'disambung hasil vlookup untuk ambil dari kolom H tabel yang 
atas (kode barang)
               'disambung format tahun YY didahului delimiter dash ( - )
               'disambung hasil vlookup untuk ambil dari kolom i tabel yang 
bawah (kode tanggal)
               'disambung format kode digit dengan struktur format hasil 
vlookup untuk ambil dari kolom i tabel yang atas (kode digit)
                            'didahului delimiter dash ( - )
          .cells(2).value= "'" _
                     & evaluate( "=vlookup(""" & left(scode,lchar-1) & 
""",g3:h8,2,0)"    ) _
                     & format( sdate , "-YY" ) _
                     & evaluate( "=vlookup(" & sdate & ", h12:i18 , 2 , 0 )" ) _
                     & format( mid( scode , lchar , 9 ) , "-" & evaluate( 
"=vlookup(""" & left(scode,lchar-1) & """,g3:i8,3,0)"  ) )     end with

end sub


Kemudian, pada event change milik worksheet terkait, diisi baris kode seperti 
di-imil yang lalu, yang bunyinya begini :
    dim rng as range,lRow as long
    if not intersect( target,range("c:c") ) is nothing then     'cek yang 
berubah beririsan dengan kolom C
        application.enableevents=false     'cegah Excel untuk responsif 
terhadap perilaku
        on error resume next           'lewati error yang terjadi
        for each rng in intersect( target,range("c:c") )  'di setiap cells yang 
berubah di kolom C
               lrow=rng.row        'simpan baris
               cells(lrow,4).value=cells(lrow,2).value*cells(lrow,3).value      
 'isi kolom D
               if err.number=0 then         'kolom D terisi dengan baik ?
                   cells(lrow,2).value=cells(lrow,2).value-cells(lrow,4).value  
  'isi kolom B
               endif    'selesai cek kolom D terisi dengan baik
               err.clear   'hapus error yang terjadi
        next rng    'ke range yang berubah berikutnya
        on error goto 0            'kembalikan setting trap error ke default
        application.enableevents=true     'excel boleh responsif lagi
    endif   'selesai cek


tapi, ganti bagian yang merah dengan baris kode memanggil prosedur 
TransformCode dengan menyertakan range yang diproses, yaitu range tanggal 
inputan dan kode inputan (1 baris x 2 kolom) seperti bergini :
       transformcode cells(lrow,3).offset(0,-1).resize(1,2)
yang bahasa manusianya :
"bi pibi, suruh anak buahmu si transformcode kerja ye. bi, kamu bawa range yang 
bisa kamu ambil sendiri ngikutin arahanku ini,
 1. kamu ke kolom C lalu jalan sampe baris yang kuproses ini (sambil nyerahin 
nota ke pibi yang isinya nomer baris Excel)
     [ cells(lrow,3) ]  (lrow adalah lembaran nota yang diserahkan)
 2. kalo dah nemu, kamu pindah ke kolom sebelumnya (berarti geser ke kiri 1 
kolom) tapi tetep dibaris itu ya
     [ .offset( 0 , -1 ) ] (kalau kolom, ke kanan itu ples, dan ke kiri itu min)
 3. terus, karungin tuh range, mulai tempatmu itu, sampai kamu dapetin 2 kolom. 
Tapi cuman sebaris tempatmu doink ya
     [ .resize( 1 , 2 ) ]
 nah.. kalo dah penuh tuh karung, segera ke tempatnya si transformcode. Dia 
bakal minta syarat tuh kalo disuruh.
 Kalo dia minta syarat, kasihin tuh karung. Kamu harus nungguin dia sampai 
selesai ya. Kalo dah selesai, lapor kesini."


Catatan :
a. kode barang baru diset untuk maksimal diawali oleh 5 karakter bukan angka. 
Silakan dikembangkan dan disesuaikan sendiri.
b. pencegahan kesalahan input tanggal (tidak bertipe datetime dan tidak bisa 
dijadikan datetime yang benar) ditambahkan sendiri.
c. inputan tanggal (bertipe datetime) atau kode yang tidak ada dalam daftar, 
silakan dicegah atau diberi proses sendiri.
d. pengubahan letak daftar-daftar, penambahan atau pengurangan isi dalam 
daftar, dan kesesuaian tipe data dalam daftar, silakan dilakukan penyesuaian di 
dalam baris-baris kode di atas secara mandiri.
e. proses yang dipicu bukan oleh pengubahan nilai kolom C atau beserta kolom 
lainnya, silakan disesuaikan sendiri baris kodenya.
f. pengembangkan dan penyesuaian dengan permasalahan yang mirip tetapi tidak 
sama datanya atau strukturnya, silakan dilakukan secara setahap demi setahap 
secara mandiri.


Moga-moga gak error ya..
Kalo error, silakan dilacak dan dicari solusinya per penyebab error.




btw,
kenapa kasusnya selalu mengganti nilai inputan user ? kok gak ditulis di kolom 
lain saja ? bukankah malah akan ada informasi dan bukti bahwa user pernah 
mengisi kurang tepat (salah ketik atau seklian struktur isiannya keliru) kalau 
hasil diletakkan di kolom lain.
Dan juga, bisa tanpa VBA.
Moga-moga bukan karena pengen tampak keren dengan begitu di-input langsung 
ganti... Soale, dikuatirkan malah nanti jadi masalah...
Kalo jadi menimbulkan masalah, jadi gak keren lagi dah...
Moga-moga...


Wa'alaikumussalam wr wb
Kid








2015-11-28 14:49 GMT+07:00 [email protected] [belajar-excel] 
<[email protected]>:


     Assalamualaikum Wr.Wb.


Dear All,Saya sedang mencoba untuk membuat kodeVBA dan mohon bantuannya untuk 
dapat membuat kode VBA untuk formatcell secara otomatis dimana jika seandainya 
pada kolom Tanggal terdapat tanggal1 jan 2016 dan pada kolom Nomer Kode 
diketikan "SD1", maka akansecara otomatis menjadi "SD002-1601-0001" (SD002 = 
Kode Barang, 16=Kode Tahun , 02=Kode Tanggal, 0001 =Kode Digit). 



Dan untuk lebih jelasnya saya lampirkan filenya.
Terima Kasih sebelumnya.

Salam


Edo



  #yiv1481508598 #yiv1481508598 -- #yiv1481508598ygrp-mkp {border:1px solid 
#d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv1481508598 
#yiv1481508598ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv1481508598 
#yiv1481508598ygrp-mkp #yiv1481508598hd 
{color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 
0;}#yiv1481508598 #yiv1481508598ygrp-mkp #yiv1481508598ads 
{margin-bottom:10px;}#yiv1481508598 #yiv1481508598ygrp-mkp .yiv1481508598ad 
{padding:0 0;}#yiv1481508598 #yiv1481508598ygrp-mkp .yiv1481508598ad p 
{margin:0;}#yiv1481508598 #yiv1481508598ygrp-mkp .yiv1481508598ad a 
{color:#0000ff;text-decoration:none;}#yiv1481508598 #yiv1481508598ygrp-sponsor 
#yiv1481508598ygrp-lc {font-family:Arial;}#yiv1481508598 
#yiv1481508598ygrp-sponsor #yiv1481508598ygrp-lc #yiv1481508598hd {margin:10px 
0px;font-weight:700;font-size:78%;line-height:122%;}#yiv1481508598 
#yiv1481508598ygrp-sponsor #yiv1481508598ygrp-lc .yiv1481508598ad 
{margin-bottom:10px;padding:0 0;}#yiv1481508598 #yiv1481508598actions 
{font-family:Verdana;font-size:11px;padding:10px 0;}#yiv1481508598 
#yiv1481508598activity 
{background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv1481508598
 #yiv1481508598activity span {font-weight:700;}#yiv1481508598 
#yiv1481508598activity span:first-child 
{text-transform:uppercase;}#yiv1481508598 #yiv1481508598activity span a 
{color:#5085b6;text-decoration:none;}#yiv1481508598 #yiv1481508598activity span 
span {color:#ff7900;}#yiv1481508598 #yiv1481508598activity span 
.yiv1481508598underline {text-decoration:underline;}#yiv1481508598 
.yiv1481508598attach 
{clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 
0;width:400px;}#yiv1481508598 .yiv1481508598attach div a 
{text-decoration:none;}#yiv1481508598 .yiv1481508598attach img 
{border:none;padding-right:5px;}#yiv1481508598 .yiv1481508598attach label 
{display:block;margin-bottom:5px;}#yiv1481508598 .yiv1481508598attach label a 
{text-decoration:none;}#yiv1481508598 blockquote {margin:0 0 0 
4px;}#yiv1481508598 .yiv1481508598bold 
{font-family:Arial;font-size:13px;font-weight:700;}#yiv1481508598 
.yiv1481508598bold a {text-decoration:none;}#yiv1481508598 dd.yiv1481508598last 
p a {font-family:Verdana;font-weight:700;}#yiv1481508598 dd.yiv1481508598last p 
span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv1481508598 
dd.yiv1481508598last p span.yiv1481508598yshortcuts 
{margin-right:0;}#yiv1481508598 div.yiv1481508598attach-table div div a 
{text-decoration:none;}#yiv1481508598 div.yiv1481508598attach-table 
{width:400px;}#yiv1481508598 div.yiv1481508598file-title a, #yiv1481508598 
div.yiv1481508598file-title a:active, #yiv1481508598 
div.yiv1481508598file-title a:hover, #yiv1481508598 div.yiv1481508598file-title 
a:visited {text-decoration:none;}#yiv1481508598 div.yiv1481508598photo-title a, 
#yiv1481508598 div.yiv1481508598photo-title a:active, #yiv1481508598 
div.yiv1481508598photo-title a:hover, #yiv1481508598 
div.yiv1481508598photo-title a:visited {text-decoration:none;}#yiv1481508598 
div#yiv1481508598ygrp-mlmsg #yiv1481508598ygrp-msg p a 
span.yiv1481508598yshortcuts 
{font-family:Verdana;font-size:10px;font-weight:normal;}#yiv1481508598 
.yiv1481508598green {color:#628c2a;}#yiv1481508598 .yiv1481508598MsoNormal 
{margin:0 0 0 0;}#yiv1481508598 o {font-size:0;}#yiv1481508598 
#yiv1481508598photos div {float:left;width:72px;}#yiv1481508598 
#yiv1481508598photos div div {border:1px solid 
#666666;height:62px;overflow:hidden;width:62px;}#yiv1481508598 
#yiv1481508598photos div label 
{color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv1481508598
 #yiv1481508598reco-category {font-size:77%;}#yiv1481508598 
#yiv1481508598reco-desc {font-size:77%;}#yiv1481508598 .yiv1481508598replbq 
{margin:4px;}#yiv1481508598 #yiv1481508598ygrp-actbar div a:first-child 
{margin-right:2px;padding-right:5px;}#yiv1481508598 #yiv1481508598ygrp-mlmsg 
{font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv1481508598 
#yiv1481508598ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv1481508598 
#yiv1481508598ygrp-mlmsg select, #yiv1481508598 input, #yiv1481508598 textarea 
{font:99% Arial, Helvetica, clean, sans-serif;}#yiv1481508598 
#yiv1481508598ygrp-mlmsg pre, #yiv1481508598 code {font:115% 
monospace;}#yiv1481508598 #yiv1481508598ygrp-mlmsg * 
{line-height:1.22em;}#yiv1481508598 #yiv1481508598ygrp-mlmsg #yiv1481508598logo 
{padding-bottom:10px;}#yiv1481508598 #yiv1481508598ygrp-msg p a 
{font-family:Verdana;}#yiv1481508598 #yiv1481508598ygrp-msg 
p#yiv1481508598attach-count span {color:#1E66AE;font-weight:700;}#yiv1481508598 
#yiv1481508598ygrp-reco #yiv1481508598reco-head 
{color:#ff7900;font-weight:700;}#yiv1481508598 #yiv1481508598ygrp-reco 
{margin-bottom:20px;padding:0px;}#yiv1481508598 #yiv1481508598ygrp-sponsor 
#yiv1481508598ov li a {font-size:130%;text-decoration:none;}#yiv1481508598 
#yiv1481508598ygrp-sponsor #yiv1481508598ov li 
{font-size:77%;list-style-type:square;padding:6px 0;}#yiv1481508598 
#yiv1481508598ygrp-sponsor #yiv1481508598ov ul {margin:0;padding:0 0 0 
8px;}#yiv1481508598 #yiv1481508598ygrp-text 
{font-family:Georgia;}#yiv1481508598 #yiv1481508598ygrp-text p {margin:0 0 1em 
0;}#yiv1481508598 #yiv1481508598ygrp-text tt {font-size:120%;}#yiv1481508598 
#yiv1481508598ygrp-vital ul li:last-child {border-right:none 
!important;}#yiv1481508598


  

Kirim email ke