Hai Edo,

Pembarian tanda petik satu ( ' ) dalam penulisan suatu nilai ke sebuah
cells dimaksudkan agar nilai yang ditulis ke cells tersebut akan
diperlakukan cells Excel sebagai data bertipe text.

Merujuk ke sheet lain, tambahkan nama sheet dengan struktur 'nama sheetnya'!
sebelum alamat range yang dirujuk.

Wassalam,
Kid


2015-11-30 12:22 GMT+07:00 Edo Hanggoro [email protected]
[belajar-excel] <[email protected]>:

>
>
> Dear All,
>
> Terima kasih atas bantuannya dan saya sudah coba dan tidak ada masalah.
> Ada beberapa hal yang ingin saya ketahui yaitu :
>
>    - Di awal format terdapat tanda petik satu ('),apa fungsi dari tanda
>    tersebut?
>    - Saya mencoba untuk menghilangkan  tanda petik satu (') dengan
>    menghapus bagian " ' " tetapi mengapa hasilnya masih tetap ada tanda (').
>    - .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
>       - Jika seandainya untuk table array dari fungsi vlookup tersebut
>    akan diambil dari worksheet lain (misal dari Sheet 2) bagaimana
>    penulisannya di kodenya?
>
>
> Terima kasih
> Salam
>
> Edo
>
>
>
> On Sunday, November 29, 2015 8:35 PM, "'Mr. Kid' [email protected]
> [belajar-excel]" <[email protected]> wrote:
>
>
>
> Wa'alaikumussalam wr wb
>
> Hai Edo,
>
> Prosedur TransformCode nya sudah dibuat ya. Sebaiknya diletakkan di
> general module agar bisa digunakan oleh prosedur lainnya, termasuk
> prosedur-prosedur events milik sheet manapun dan sebagainya.
>
> Kemudian, cara memanggil prosedur nya diperbaiki. Kalau sempet,
> jalan-jalanlah ke blog milis tentang hal ini disini
> <http://b-excel.blogspot.co.id/2013/07/belajarvba-005-procedure-seri-1.html>,
> yang ada bagian tentang cara memanggil prosedur lain dari sebuah prosedur.
>
> Pada kasus Anda,
> berikut ini yang Anda buat :
>   Cells(lRow, 3).Value = TransformCode.Cells(lRow, 3).Offset(0,
> -1).Resize(1, 2)
> ini yang ada diimil saya tempo lalu :
>     transformcode cells(lrow,3).offset(0,-1).resize(1,2)
>
> dan saya rasa jelas bahwa :
>
> tapi, ganti *bagian yang merah *dengan
>
> menunjukkan bahwa bagian yang berbunyi :
>                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
> harus diganti alias HAPUS bagian merah tersebut dan tulis baris kode
> berikut :
>     transformcode cells(lrow,3).offset(0,-1).resize(1,2)
>
> Ada baiknya jika tidak langsung terfokus kepada baris-baris kode nya saja,
> tetapi runut dari awal imil sampai akhir imil disempatkan ditelaah dengan
> tartil.
>
>
> Wassalamu'alaikum wr wb
> Kid
>
>
>
> 2015-11-29 8:59 GMT+07:00 Edo Hanggoro [email protected]
> [belajar-excel] <[email protected]>:
>
>
> 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 kode VBA dan mohon bantuannya untuk
> dapat membuat kode VBA untuk format cell secara otomatis dimana jika
> seandainya pada kolom Tanggal terdapat tanggal 1 jan 2016 dan pada kolom
> Nomer Kode diketikan "SD1", maka akan secara 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
>
>
>
>
>
>
>
> 
>

Kirim email ke