Selamat pagi teman",,
mohon bantuannya apakah ada yang tahu formula atau tutorial untuk looping suatu template seperti file terlampir.
kalau ada yang tahu boleh dishare supaya menjadi bahan pembelajaran saya. :)
terima kasih.
Selamat pagi teman",,
mohon bantuannya apakah ada yang tahu formula atau tutorial untuk looping suatu template seperti file terlampir.
kalau ada yang tahu boleh dishare supaya menjadi bahan pembelajaran saya. :)
terima kasih.
@mas_uqon & @manweljs_ ...
Terlampir contoh yang dapat saya buatkan. Silahkan dipelajari dan dimodifikasi. Dalam file terlampir, trik yang saya gunakan adalah mengisi data dari sheet DATA ke sel-sel yang sudah ditentukan melalui definisi nama range (lihat dalam Name Manager) pada sheet Card Template. Untuk setiap data kemudian dilakukan penyalinan range Card.RANGE (range B2:BB23) pada sheet Card Template dan kemudian ditempelkan pada sheet PRINT sebagai objek gambar (picture object). Untuk menggunakannya, isi indeks baris data yang akan diproses lalu klik tombol PROSES.
Perhatikan, script pada file terlampir pada dasarnya sudah dapat digunakan (sudah saya coba berulang kali), namun tentunya tidak menutup kemungkinan terjadi kesalahan (Error) yang tidak saya ketahui. Saya hanya memberikan script intinya saja. Selebihnya silahkan dikembangkan sendiri.
Demikian, semoga bermanfaat.
Terima kasih mas, baru saya pelajari sih..
tapi saya iseng" nambah qr qode dibawah kolom angka, pas saya coba generate,, qr qodenya ga dinamis seperti yg lain padahal saya ambil dari database yang ada di sheet 1..
mohon pencerahannya mas.. :D
@mas_uqon ...
Pastinya saya juga tidak tahu mengapa, namun solusi berikut mungkin bisa membantu. Pada modul mdlMain, prosedur OpenGenerator(), coba modifikasi scriptnya menjadi:
Public Sub OpenGenerator() SheetTarget.Select DoEvents frmMain.Show End Sub
dan pada objek frmMain, prosedur CopyCardRange(), modifikasi durasi delay:
... Call Sleep(150) ...
menjadi:
... Call Sleep(250) ...
Kemudian coba eksekusi kembali scriptnya melalui sheet DATA. Jika belum berhasil, coba tutup dahulu aplikasi Excel-nya, kemudian buka kembali lalu coba kembali eksekusi script tersebut. Jika belum berhasil juga, coba aktifkan sheet PRINT kemudian tekan tombol ALT + F8 untuk menampilkan jendela macro, kemudian pilih macro yang ada pada daftar macro, kemudian klik tombol RUN.
Itu saja solusi yang saya ketahui saat ini. Mungkin ada rekan-rekan lain yang tahu solusinya, silahkan berikan masukan.
Demikian.
waah bisa mas..
saya coba copy kan ke file saya pas saya klik generate ada yang error mas di macro nya..
di script :
bValid = bValid And (m_xlDataRange.Count > 0)
kalau seperti itu knp ya mas?
@mas_uqon ...
Kesalahan yang terjadi adalah kesalahan dasar, dimana definisi nama range yang akan digunakan dirujuk ke objek yang salah. Dalam hal ini (pada file yang @mas_uqon lampirkan), nama range Table.DATA merujuk ke objek Sheet1 sedangkan aktualnya, nama range tersebut merujuk ke objek Sheet4 (lihat pada jendela Project Explorer). Solusinya, pada prosedur Sub UserForm_Activate(), ubah baris script berikut:
... If m_xlDataRange Is Nothing Then Set m_xlDataRange = Sheet1.Range("Table.DATA") If m_xlDataRange Is Nothing Then Err.Clear: On Error GoTo 0 bValid = False End If End If bValid = bValid And (m_xlDataRange.Count > 0) ...
menjadi:
... If m_xlDataRange Is Nothing Then Set m_xlDataRange = Sheet4.Range("Table.DATA") If m_xlDataRange Is Nothing Then Err.Clear: On Error GoTo 0 bValid = False Else bValid = bValid And (m_xlDataRange.Count > 0) End If End If ...
Solusi lainnya adalah dengan menyusun script untuk menemukan objek Worksheet yang tepat dari nama range tersebut.
Selain itu, saran saya, sebaiknya definisi nama range Table.DATA sebaiknya dibuat dinamis saja, dengan demikian jumlah baris data yang diproses sesuai dengan jumlah data aktual yang ada di dalam tabel datanya (sehingga untuk baris data yang kosong tidak diproses). Untuk saat ini, tanpa menggunakan nama range dinamis, jumlah baris data yang akan diproses ada 4000 baris, sedangkan data aktualnya hanya 9 baris (meskipun pada form dapat diatur indeks baris yang akan diproses, namun saya rasa lebih baik diotomasi saja sehingga didapat jumlah baris aktualnya). Selain menggunakan nama range dinamis, untuk merujuk ke tabel datanya dapat dilakukan dengan cara merujuk ke range aktualnya, misalkan dengan script:
... lRow = WorksheetFunction.CountIf(Sheet4.Range("C3:C5000"), "?*") + 2 Set m_xlDataRange = Sheet4.Range("B3:U" & lRow) ...
Mengingat adanya perbedaan antara tabel data yang mas gunakan sekarang dengan tabel data pada contoh sebelumnya, maka ada banyak penyesuaian yang harus mas lakukan.
Demikian.
Maaf, saya revisi sedikit. Untuk prosedur Sub UserForm_Activate() dimodifikasi menjadi:
Private Sub UserForm_Activate() Dim bValid As Boolean On Error Resume Next bValid = True On Error Resume Next If m_xlDataRange Is Nothing Then Set m_xlDataRange = Sheet4.Range("Table.DATA") If m_xlDataRange Is Nothing Then bValid = False Err.Clear End If End If bValid = bValid And (m_xlDataRange.Count > 0) If bValid Then With m_xlDataRange m_lMinIndex = 1 txtMinIndex = m_lMinIndex m_lMaxIndex = .Rows.Count txtMaxIndex = m_lMaxIndex End With Else MsgBox "Nama range Table.Data tidak ditemukan atau tidak ada data yang akan diproses!", _ vbCritical Or vbOKOnly, Me.Caption Err.Clear: On Error GoTo 0 Unload Me End If End Sub
Demikian.
yups, terima kasih mas @Caton ,,
sekarang sudah saya pisahkan lgi file nya..
kemarin ketika saya coba ambil sample untuk coba beberapa qr code lancar jaya..
tpi ketika saya coba kembali untuk lebih banyak qr code yang tampil gambarnya malah jadi aneh mas, sama ada yg seharusnya tidak muncul qr codenya tetapi ketika di generate malah muncul, klo seperti itu gmn ya? *saya ambil sample generate dari baris 20 sampai ke baris 26.
@mas_uqon ...
Saya juga tidak tahu mengapa demikian... :) Pada gambar berikut:
yang pertama adalah hasil dari file yang mas lampirkan. Yang kedua hasil saat scriptnya saya jalankan dan yang ketiga adalah setelah saya mengubah lebar kolom QR CODE NO pada sheet QR CODE ASMO (dan merapikan posisi gambar Barcode pada sheet CARD TEMPLATE). Tidak ada perubahan atau penambahan pada scriptnya, saya hanya menghapus baris script berikut:
... lCount = .Shapes.Count Set xlShape = .Shapes(lCount) With xlShape.Line .Visible = msoTrue .Weight = 1.5 .ForeColor.RGB = RGB(1, 0, 0) .Transparency = 0 End With ...
hanya untuk menghilangkan garis pada setiap kartu. Jadi, dimana letak kesalahannya, saya juga tidak tahu. Saya hanya memprediksi, mungkin ada kaitannya dengan sheet QR CODE ASMO (mungkin terkait pengaturan lebar kolom atau terkait pengaturan tinggi barisnya)... mungkin! Terlampir juga hasil proses untuk seluruh data (indeks ke-1 sampai dengan indeks ke-26)
Demikian.
mas mohon bantuannya
saya ingin membuat seperti mas @Caton buat..
Dimana Sheets Barcode yang berisi 1 barcode dan judul
Menjadi 3 barcode ke kanan dan 4 barcode ke bawah secara otomatis berdasarkan data yang ada
seperti Sheet Print Barcode
====
mohon bimbingannya
coba cek file terlampir.
saya kurang paham mengenai nomor acak pada lampiran, jadi silahkan dikembangkan sendiri
note: karena menggunakan sumber dari luar maka untuk membuat qrcodenya harus sambil online ya.
kodenya berasal dari diskusi berikut
siap saya coba pelajari dulu,,
kalo barcodenya bebas sich,, yang saya butuhkan template menambah shapes otomatis ke kanan nambah 2 ke bawah nambah 4
seperti
Public Sub ForNext_Contoh1()
Dim i As Integer, j As Integer
For i = 1 To 6
For j = 1 To 4
Cells(i, j).Value = 100 <<< pengennya shapes yang berbeda
Next j
Next i
End Sub
makasih banyak mas @manweljs_
Mohon bantuannya kembali mas,
bagaimana caranya ya, untuk men-setting 1 lembar supaya bisa print 8 kanban?
sample nya seperti pada sheet sample.
lampirannya.
@mas_uqon ...
Terlampir contoh modifikasinya. Silahkan dimodifikasi lebih lanjut.
Dear mas @Caton ,
terima kasih mas atas samplenya, kemudian saya coba edit-edit kembali, dan saya berniat untuk memaksimalkan kertas yang ada supaya tidak banyak kertas yang tersisa(sample image), namun tidak bisa. Padahal marginnya semua sudah saya buat nol "0". untuk setting marginnya kira-kira dimana ya mas?
tergantung printernya
coba printernya ganti ke Microsoft Print to PDF kemudian scalenya jadi 105%
atau dengan printer biasa ganti properti nya ke borderless kemudian scale jadi 105%
intinya setting default tiap printer berbeda2, ada yang default sudah borderless ada yang tidak
@mas_uqon ... untuk setting marginnya kira-kira dimana ya mas ...
Kalau ingin mengatur margin kertas melalui VBA, mas @Uqon dapat menggunakan objek PageSetup dari objek Worksheet. Contohnya:
With SheetSample.PageSetup .RightMargin = 0 .LeftMargin = 0 .TopMargin = 0 .BottomMargin = 0 End With
Namun, saya yakin itu bukan solusi yang tepat, karena jika lebar objek yang akan dicetak lebih kecil atau lebih besar dari lebar area cetak pada kertas, maka tetap tidak akan maksimal. Karena setiap printer memiliki batas marginnya sendiri, maka pengaturannya disesuaikan kepada printer yang digunakan. Bisa saja menggunakan pengaturan borderless atau mengatur skala objek yang akan dicetak.
Cara lainnya Selain dengan mengatur skala objek yang akan dicetak (lakukan ini dari jendela Print Preview), mas @Uqon juga dapat mengatur ulang lebar setiap label, melalui bagian script pada objek frmMainB seperti berikut:
... With xlShape .LockAspectRatio = msoFalse '+-- Atur lebar label, misalkan 9.65! .Width = Application.CentimetersToPoints(9.45) .Height = Application.CentimetersToPoints(6.4) .Left = .Left + 0.5 ' .Left + 0 .Top = .Top + 0.5 ' .Left + 0 With .Line .Visible = msoTrue .Weight = 1 .ForeColor.RGB = RGB(1, 0, 0) .Transparency = 0 End With End With ...
kemudian, lakukan pengisian ulang label. Setelah label-label ditampilkan, periksa kembali lembar kolom terakhir dari setiap label (label sebelah kiri ada pada kolom J, label sebelah kanan ada pada kolom T). Pastikan lebar kolom-kolom tersebut sejajar dengan lebar setiap label. Kemudian atur Print Area pada kolom B sampai dengan kolom T dan lakukan Print Preview. Lakukan ini sampai mendapatkan ukuran yang maksimal.
Demikian, semoga bermanfaat.