Rakam Modify Run Excel Macro - Excel Tips

Ini adalah tip Excel mingguan ke-19 di.com. Banyak petua Excel melibatkan beberapa muslihat makro. Minggu ini, bagi pengguna Excel yang tidak pernah menulis makro, saya menawarkan buku asas mengenai cara merakam dan kemudian menyesuaikan makro Excel yang berguna.

Contoh Data Alamat

Katakan anda mempunyai 400 baris data alamat seperti yang ditunjukkan dalam rajah atas di sebelah kiri. Medan nama ada di lajur A, alamat jalan di lajur B, dan kota di lajur C.

Matlamat anda adalah untuk menukar data menjadi satu lajur seperti yang ditunjukkan pada gambar kedua.

Masalah sederhana ini akan digunakan untuk menggambarkan cara merakam, mengubah suai, dan kemudian menjalankan makro sederhana.

Untuk pengguna Excel 95: Setelah merakam makro, Excel akan meletakkan makro anda pada helaian yang disebut Modul1 di buku kerja anda. Anda hanya boleh klik pada helaian untuk mengakses makro.

Walaupun terdapat 400 rekod dalam lembaran kerja ini, saya ingin merakam sedikit makro yang mengurus hanya alamat pertama. Makro akan menganggap bahawa selpointer ada pada nama pertama. Ia akan memasukkan tiga baris kosong. Ia akan menyalin sel di sebelah kanan sel asal ke sel di bawah sel asal. Ia akan menyalin sel bandar ke sel 2 baris di bawah sel asal. Ia kemudian harus menggerakkan penunjuk sel ke bawah sehingga terdapat pada nama seterusnya.

Kuncinya adalah memikirkan proses ini sebelum anda merakamnya. Anda tidak mahu membuat banyak kesilapan semasa merakam makro.

Jadi, masukkan penunjuk sel anda ke dalam sel A1. Pergi ke menu dan pilih Alat> Makro> Rakam Makro baru. Dialog Rakam Makro mencadangkan nama Makro1. Ini baik-baik saja, jadi tekan OK.

Perakam makro Excel mempunyai satu tetapan lalai yang sangat bodoh yang mesti anda ubah untuk membuat makro ini berfungsi. Di Excel 95, pergi ke Alat> Makro> Gunakan Rujukan Relatif Di Excel 97-2003, klik ikon kedua pada Bar Alat Rakaman Berhenti. Ikon itu kelihatan seperti lembaran kerja kecil. Sel merah di C3 menunjuk sel merah lain di A3. Ikon tersebut disebut Relative Reference. Apabila ikon ini dihidupkan, ada beberapa warna di sekitar ikon. Ikon mengingati tetapan terakhir dari sesi Excel semasa, jadi anda mungkin perlu mengkliknya beberapa kali untuk mengetahui kaedah mana yang sedang atau tidak. Dalam Excel 2007, gunakan Tampilan - Makro - Gunakan Rujukan Relatif.

OK, kami sudah bersedia untuk pergi. Ikut langkah-langkah ini:

  • Tekan anak panah ke bawah sekali untuk beralih ke sel B1.
  • Tahan kekunci shift dan tekan anak panah ke bawah dua kali untuk memilih baris 2, 3, dan 4
  • Dari menu, pilih Masukkan, kemudian pilih Baris untuk memasukkan tiga baris kosong.
  • Tekan anak panah ke atas dan kemudian anak panah kanan untuk beralih ke sel B2.
  • Tekan Ctrl X untuk memotong sel B2.
  • Tekan anak panah ke bawah, anak panah kiri, kemudian Ctrl V untuk ditampal ke dalam sel A2.
  • Tekan anak panah ke atas, anak panah kanan, anak panah kanan, Ctrl X, anak panah kiri, anak panah kiri, panah bawah, panah bawah, Ctrl V untuk memindahkan C1 ke A3.
  • Tekan anak panah ke bawah dua kali sehingga penunjuk sel kini berada pada nama seterusnya di Baris A5.
  • Klik ikon "Hentikan Rakaman" pada bar alat untuk berhenti merakam makro.

Anda telah merakam makro pertama anda. Mari kita lihat. Pergi ke Alat> Makro> Makro. Dari senarai, sorot Macro1 dan tekan butang Edit. Anda mesti melihat sesuatu yang kelihatan seperti ini.

Sub Macro1() ' ' Macro1 Macro ' Macro recorded 4/18/99 by Reader ' ' ActiveCell.Offset(1, 0).Range("A1:A3").Select Selection.EntireRow.Insert ActiveCell.Offset(-1, 1).Range("A1").Select Selection.Cut ActiveCell.Offset(1, -1).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(-1, 2).Range("A1").Select Selection.Cut ActiveCell.Offset(2, -2).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(2, 0).Range("A1").Select End Sub

Hei, jika anda bukan pengaturcara, itu mungkin kelihatan menakutkan. Jangan biarkan begitu. Sekiranya ada sesuatu yang anda tidak faham, ada pertolongan yang sangat baik. Klik kursor anda di suatu tempat dalam kata kunci Offset dan tekan F1. Dengan syarat anda memasang fail bantuan VBA, anda akan melihat topik bantuan untuk kata kunci Offset. Bantuan memberitahu anda sintaks penyataan. Ia mengatakan bahawa ia adalah Offset (RowOffset, ColumnOffset). Masih kurang jelas? Cari perkataan "contoh" bergaris bawah hijau di bahagian atas bantuan. Contoh VBA Excel akan membolehkan anda mengetahui apa yang sedang berlaku. Dalam contoh Offset, dikatakan untuk mengaktifkan sel dua baris di bawah dan tiga baris di sebelah kanan sel semasa, anda akan menggunakan:

ActiveCell.Offset(3, 2).Activate

OK, jadi itu adalah petunjuk. Fungsi mengimbangi adalah cara bergerak di sekitar spreadsheet Excel. Memandangkan sedikit maklumat ini, anda dapat melihat apa yang dilakukan oleh makro. Offset pertama (1, 0) adalah di mana kami menggerakkan selpointer ke A2. Offset seterusnya adalah di mana kita bergerak ke atas satu baris (-1 baris) dan lebih dari 1 lajur. Anda mungkin tidak memahami perkara lain dalam makro, tetapi masih berguna.

Kembali ke lembaran kerja Excel. Letakkan penunjuk sel anda di sel A5. Pilih Alat> Makro> Makro> Makro1> Jalankan. Makro berjalan dan alamat kedua anda diformat.

Anda mungkin mengatakan memilih rentetan perintah yang panjang ini lebih sukar daripada hanya memformat dengan tangan. OK, kemudian lakukan Alat> Makro> Makro> Pilihan. Di kotak pintasan, katakan Ctrl + w adalah kunci pintasan untuk makro ini. Klik OK, kemudian tutup dialog Makro dengan Batal. Sekarang, apabila anda menekan Ctrl w, makro akan berjalan. Anda boleh memformat alamat dalam satu kekunci.

Adakah anda bersedia untuk masa yang besar? Berapa banyak alamat yang tinggal? Saya menekan Ctrl wa beberapa kali, jadi saya tinggal 395. Kembali ke makro anda. Kami akan memasukkan keseluruhan kod makro. Masukkan baris baru yang bertuliskan "Do Sampai activecell.value =" "" sebelum baris pertama kod makro. Masukkan garis yang bertuliskan "Loop" sebelum baris End Sub. Gelung Do akan melaksanakan segala-galanya antara garis Do dan Loop sehingga berjalan ke garisan kosong. Makro kini kelihatan seperti ini:

Sub Macro1() ' ' Macro1 Macro ' Macro recorded 4/18/99 by Reader ' ' Do Until ActiveCell.Value = "" ActiveCell.Offset(1, 0).Range("A1:A3").Select Selection.EntireRow.Insert ActiveCell.Offset(-1, 1).Range("A1").Select Selection.Cut ActiveCell.Offset(1, -1).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(-1, 2).Range("A1").Select Selection.Cut ActiveCell.Offset(2, -2).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(2, 0).Range("A1").Select Loop End Sub

Kembali ke helaian Excel anda. Letakkan penunjuk sel pada nama seterusnya. Tekan Ctrl w dan makro akan memformat semua rekod anda dalam beberapa saat.

Pengarang buku Excel mengatakan bahawa anda tidak dapat melakukan sesuatu yang berguna dengan merakam makro. Tidak betul! Bagi orang yang perlu memotong dan menampal 800 kali, makro ini sangat berguna. Perlu beberapa minit untuk merakam dan menyesuaikan. Ya, pengaturcara profesional akan menunjukkan bahawa kodnya sangat tidak cekap. Excel meletakkan sejumlah besar barang di sana yang tidak perlu dimasukkan ke sana. Ya, jika anda tahu apa yang anda lakukan, anda dapat menyelesaikan tugas yang sama dengan separuh baris yang akan berjalan dalam 1.2 saat dan bukannya 3 saat. JADI APA? 3 saat jauh lebih pantas daripada 30 minit tugas yang akan diambil.

Beberapa lagi petua untuk memulakan perakam makro:

  • Apostrophe yang digunakan memang menunjukkan komen. Apa-apa sahaja selepas kerasulan tidak diendahkan oleh VBA
  • Ini adalah pengaturcaraan berorientasikan objek. Sintaks asasnya adalah objek.action. Sekiranya penyusun berorientasikan objek bermain bola sepak, ia akan menyebut "ball.kick" untuk menendang bola. Jadi "Selection.Cut" mengatakan untuk melakukan "edit> potong" pada pilihan semasa.
  • Dalam contoh di atas, pengubah Range adalah relatif dengan sel aktif. Sekiranya sel aktif berada di B2 dan anda mengatakan "ActiveCell.Range (" A1: C3 "). Pilih", maka anda memilih kawasan 3 baris dengan 3 lajur bermula di sel B2. Dengan kata lain, anda memilih B2: D4. Mengatakan "ActiveCell.Range (" A1 ")" mengatakan untuk memilih julat sel 1 x 1 bermula dengan sel aktif. Ini sangat berlebihan. Ia sama dengan mengatakan "ActiveCell.Select".
  • Simpan buku kerja anda sebelum menjalankan makro untuk pertama kalinya. Dengan cara ini, jika terdapat ralat dan melakukan sesuatu yang tidak dijangka, anda boleh menutup tanpa menyimpan dan kembali ke versi yang disimpan.

Mudah-mudahan contoh mudah ini memberi anda keberanian kepada perekam makro pemula untuk merakam makro sederhana apabila anda mempunyai tugas berulang untuk dilakukan di Excel.

Artikel menarik...