Pengguna Excel adalah kelompok pragmatis dan tumbuh menggunakan pernyataan IF dalam penggunaan Excel setiap hari. Jadi ketika berbicara tentang VBA, seseorang secara alami menganggap cara terbaik untuk memindahkan data dari satu tempat ke tempat lain adalah dengan menguji setiap sel untuk melihat apakah memenuhi suatu kondisi kemudian memindahkan seluruh baris. Berikut ini adalah kode umum yang saya lihat di forum excel;
Opsi Eksplisit
Sub Tes()
Dim i Sebagai Integer
Aplikasi. Pembaruan Layar=Salah
Untuk i=2 Sampai 101
Jika Rentang("B" & i). Nilai="Ford" Lalu
Rentang("B" & i). Seluruh baris. Salinan
Lembar ("Lembar2"). Pilih
Rentang("A1"). Akhir(xlDown). Offset(1, 0). Pilih
Pilihan. TempelSpesial xlPasteValues
Lembar("Lembar1"). Pilih
Akhir Sub
Saya mungkin telah memasukkan terlalu banyak baris tetapi saya berasumsi bahwa perekam digunakan untuk menghasilkan sebagian besar kode. Masalah dengan VBA di atas adalah ketika daftar informasi bertambah secara eksponensial, waktu yang dibutuhkan proses untuk berjalan lambat sesuai dengan ukuran kumpulan data. Jika daftar berisi 100 baris, maka Excel harus melakukan 100 tindakan jika semua item memenuhi kriteria. Dapat dikatakan bahwa dalam contoh di atas ada 200 hal yang harus dilakukan Excel, ajukan pertanyaan 100 kali, lakukan tindakan berpotensi 100 kali lebih lanjut
Solusi Sederhana
Lebih mudah untuk mengajukan satu pertanyaan Excel dan melakukan satu tindakan Excel untuk seluruh kumpulan data. Ini dapat dilakukan dengan menggambar pelajaran sebelumnya yang tercakup dalam Autofilter dengan bagian VBA situs. Dalam contoh di atas, cara yang sangat sederhana untuk memindahkan data adalah konstruksi VBA berikut;
Opsi Eksplisit
Sub Filter1() 'Excel VBA untuk menggunakan autofilter lalu salin
Rentang("A1. A101"). Filter Otomatis 1, "Ford"
Rentang("A1. A101"). Salin Lembar2. Range("A" & Baris. Menghitung). Akhir(xlUp)(2)
Rentang("A1"). Autofilter 'Mati dengan autofilter
Metode ini berguna saat Anda ingin memasukkan informasi ke dalam lembar ringkasan secara teratur. VBA mengisolasi seperti data dan memindahkan informasi dengan mulus antar lembar
Sisipkan Baris di Bagian Bawah Rentang dan Salin Rumus dari Atas
Jika Anda memiliki data baru yang ditambahkan ke bagian bawah rentang sel dan memerlukan rumus dari sel di atas disalin, maka kode VBA Excel berikut akan mengatasi situasi ini. Itu menyalin baris data terakhir, menyisipkan baris baru dan rumus dari atas akan dialihkan ke bawah satu baris dalam urutan yang sempurna
Kami memulai dengan menunjukkan kepada Anda contoh salinan Lembar yang paling sederhana. menyalin Lembar ke Buku Kerja baru. Contoh di bawah ini akan menunjukkan cara menyalin Lembar dalam Buku Kerja yang sama. Saat menyalin Lembar di dalam Buku Kerja, Anda harus menentukan lokasi. Untuk menentukan lokasi, Anda akan memberi tahu VBA untuk memindahkan Lembar Kerja SEBELUM atau SETELAH Lembar Kerja lain
Salin Lembar Sebelum Lembar Lain
Di sini kita akan menentukan untuk menyalin dan menempelkan Lembar sebelum Lembar2
Sheets("Sheet1").Copy Before:=Sheets("Sheet2")Salin Lembar Sebelum Lembar Pertama
Selain menentukan nama Lembar, Anda juga dapat menentukan posisi Lembar. Di sini kita menyalin dan menempelkan Lembar sebelum Lembar pertama di Buku Kerja
Sheets("Sheet1").Copy Before:=Sheets(1)_Lembar yang baru dibuat sekarang akan menjadi Lembar pertama di Buku Kerja
Pengkodean VBA Menjadi Mudah
Berhenti mencari kode VBA online. Pelajari lebih lanjut tentang AutoMacro - Pembuat Kode VBA yang memungkinkan pemula membuat kode prosedur dari awal dengan pengetahuan pengkodean minimal dan dengan banyak fitur hemat waktu untuk semua pengguna
Belajarlah lagi
Salin Lembar Setelah Lembar Terakhir
Gunakan properti After untuk memberi tahu VBA agar menempelkan Sheet SETELAH sheet lain. Di sini kita akan menyalin dan menempelkan Lembar setelah Lembar terakhir di Buku Kerja
Sheets("Sheet1").Copy After:=Sheets(Sheets.Count)Perhatikan bahwa kami menggunakan Spreadsheet. Hitung untuk menghitung jumlah Lembar dalam Buku Kerja
Pindah Lembar
Anda juga dapat memindahkan Lembar di dalam Buku Kerja menggunakan sintaks serupa. Kode ini akan memindahkan Sheet1 ke akhir Buku Kerja
Sheets("Sheet1").Move After:=Sheets(Sheets.Count)Salin dan Lembar Nama
Setelah menyalin dan menempelkan Lembar, lembar yang baru dibuat menjadi Lembar Aktif. Jadi untuk mengganti nama sheet baru kita, cukup gunakan ActiveSheet. Nama
Sub CopySheetRename1() Sheets("Sheet1").Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = "LastSheet" End Sub_
Jika nama Lembar sudah ada, kode di atas akan menghasilkan kesalahan. Sebagai gantinya, kita dapat menggunakan "On Error Resume Next" untuk memberi tahu VBA agar mengabaikan penamaan Lembar dan melanjutkan prosedur lainnya
Atau gunakan Fungsi RangeExists kami untuk menguji apakah nama Sheet sudah ada sebelum mencoba menyalin sheet
Sub CopySheetRename3() If RangeExists("LastSheet") Then MsgBox "Sheet already exists." Else Sheets("Sheet1").Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = "LastSheet" End If End Sub Function RangeExists(WhatSheet As String, Optional ByVal WhatRange As String = "A1") As Boolean Dim test As Range On Error Resume Next Set test = ActiveWorkbook.Sheets(WhatSheet).Range(WhatRange) RangeExists = Err.Number = 0 On Error GoTo 0 End Function_Pemrograman VBA. Code Generator bekerja untuk Anda
Salin dan Lembar Nama Berdasarkan Nilai Sel
Anda mungkin juga ingin menyalin dan menamai Lembar berdasarkan Nilai Sel. Kode ini akan memberi nama Lembar Kerja berdasarkan nilai Sel di A1
ActiveSheet.Copy0Salin Lembar Kerja ke Buku Kerja Lain
Sejauh ini kami telah bekerja dengan menyalin Lembar di dalam Buku Kerja. Sekarang kita akan membahas contoh untuk menyalin dan menempelkan Lembar ke Buku Kerja lain. Kode ini akan menyalin Lembar ke awal buku kerja lain
ActiveSheet.Copy1Ini akan menyalin Lembar Kerja ke akhir Buku Kerja lain
ActiveSheet.Copy2Perhatikan kita mengganti 1 dengan Workbooks(“Example. xlsm”). Seprai. Hitung untuk mendapatkan Lembar Kerja terakhir
Salin Lembar Kerja ke Buku Kerja Tertutup
Anda mungkin juga ingin menyalin Lembar Kerja ke Buku Kerja yang tertutup. Kode ini akan membuka Buku Kerja yang tertutup sehingga Anda dapat menyalin Lembar ke dalamnya
ActiveSheet.Copy3Salin Lembar dari Buku Kerja Lain Tanpa Membukanya
Sebaliknya, kode ini akan menyalin Lembar Kerja DARI Buku Kerja yang tertutup tanpa Anda perlu membuka buku kerja secara manual