Terima kasih kepada Katherine yang menghantar soalan untuk tip Excel minggu ini:
Saya ingin meletakkan butang borang pada lembaran kerja Excel yang, apabila diklik, akan menghantar e-mel lembaran kerja Excel yang sama kepada seseorang.
Untuk menghantar keseluruhan buku ke ask@mrexcel.com dengan baris subjek tertentu, anda akan menggunakan makro Excel ini.
Sub SendIt() Application.Dialogs(xlDialogSendMail).Show arg1:="ask@mrexcel.com", _ arg2:="This goes in the subject line" End Sub
Terdapat ikon bar alat yang membolehkan anda menambahkan butang arahan. Ikuti langkah-langkah ini untuk menambahkannya ke bar alat yang ada:
- Lihat> Bar Alat> Sesuaikan
- Klik tab arahan
- Di kotak Kategori, tatal ke bawah ke Kotak Alat Kawalan
- Di kotak arahan, tatal ke bawah ke Butang Perintah
- Klik butang arahan dan seret ke atas dan lepaskan pada bar alat yang ada
- Ketepikan dialog Sesuaikan dengan menekan Tutup
Sekarang anda mempunyai ikon butang arahan: Klik ikon. Seret ke lembaran kerja anda untuk membuat butang. Jadikannya sebesar atau sekecil yang anda mahukan. Excel akan meminta anda menetapkan makro ke butang. Pilih Hantar Klik dan seret untuk menyerlahkan perkataan Button 1 pada butang. Taipkan sesuatu seperti "E-Mail Fail ini". Klik di luar butang, dan anda sudah bersedia untuk pergi. Sekiranya anda perlu menetapkan semula makro yang dilampirkan pada butang itu, klik kanan butang dan pilih tetapkan makro.

Bagaimana jika anda mempunyai banyak senarai maklumat yang ingin anda sebarkan kepada sebilangan pengguna, tetapi anda hanya mahu setiap pengguna melihat maklumat mereka sendiri? Di bawah ini adalah makro yang sedikit lebih kompleks yang akan melakukannya. Di sebelah kanan adalah contoh senarai penjualan untuk tiga wilayah.
Sebelum menulis makro, sediakan buku kerja seperti berikut:

- Salin lembaran kerja data dengan mengklik kanan tab data, pilih "pindahkan atau salin", periksa "buat salinan", OK. Namakan semula lembaran kerja baru ini "Laporkan". Anda boleh menamakan semula helaian dengan mengklik kanan tab, memilih "ganti nama", kemudian menaip Laporan.
- Pada tab laporan, hapus semua baris data. Simpan tajuk dan tajuk sahaja.

- Masukkan lembaran kerja baru dengan lajur ini: Wilayah, Penerima. Pada lembaran kerja ini, taipkan setiap nama wilayah dan pengguna yang harus menerima laporan. Namakan semula lembaran kerja ini "Pengedaran".
Inilah makro. Garis yang bermula dengan tanda petik (') adalah komen yang dirancang untuk membantu anda mengikuti arus.
Public Sub SendItAll() ' Clear out any old data on Report Sheets("Report").Select Range("A1").CurrentRegion.ClearContents ' Sort data by region Sheets("Data").Select Range("A1").CurrentRegion.Select Selection.Sort Key1:=Range("A2"), Header:=xlYes ' Process each record on Distribution Sheets("Distribution").Select FinalRow = Range("A15000").End(xlUp).Row For i = 2 To FinalRow Sheets("Distribution").Select RegionToGet = Range("A" & i).Value Recipient = Range("B" & i).Value ' Clear out any old data on Report Sheets("Report").Select Range("A1").CurrentRegion.ClearContents ' Get records from Data Sheets("Data").Select Range("A1").CurrentRegion.Select ' Turn on AutoFilter, if it is not on If ActiveSheet.AutoFilterMode = False Then Selection.AutoFilter ' Filter the data to just this region Selection.AutoFilter Field:=1, Criteria1:=RegionToGet ' Select only the visible cells and copy to Report Selection.SpecialCells(xlCellTypeVisible).Select Selection.Copy Destination:=Sheets("Report").Range("A1") ' Turn off the Autofilter Selection.AutoFilter ' Copy the Report sheet to a new book and e-mail Sheets("Report").Copy Application.Dialogs(xlDialogSendMail).Show _ arg1:=Recipient, _ arg2:="Report for " & RegionToGet ActiveWorkbook.Close SaveChanges:=False Next i End Sub