Makro Apabila Sel Excel Berubah - Petua Excel

Isi kandungan

Beberapa pembaca telah mengemukakan soalan yang memerlukan Excel menjalankan bahagian makro setiap kali nilai berubah dalam spreadsheet Excel.

Pertama, kaedah yang diperbaiki hanya terdapat di XL97: Excel 97 mempunyai beberapa pengendali acara baru yang membolehkan makro dijalankan setiap kali sel berubah.

Katakan bahawa bila-bila masa nilai lebih daripada 100 dimasukkan di lajur A, anda ingin memformat sel di sebelahnya menjadi merah.

  • Buka Edit Visual Basic (Alat> Makro> Editor Visual Basic)
  • Di tetingkap kiri, klik kanan Lembaran1 dan pilih Lihat Kod.
  • Di bahagian atas kotak dialog Book1 - Sheet1 Code, terdapat dua dropdown. Dari menu lungsur kiri pilih Lembaran Kerja. Dari menu lungsur kanan, pilih Tukar.
  • Masukkan baris kod berikut:

    Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Target.Column = 1 Then ThisRow = Target.Row If Target.Value> 100 Then Range("B" & ThisRow).Interior.ColorIndex = 3 Else Range("B" & ThisRow).Interior.ColorIndex = xlColorIndexNone End If End If End Sub

Setiap kali nilai dalam sel diubah, makro ini akan dijalankan. Target pemboleh ubah akan memberitahu anda sel mana dan nilai sel yang baru. Anehnya, penggunaan kaedah ini tidak melambatkan prosesnya dengan ketara.

Perhatikan bahawa makro akan tetap aktif selagi lembaran kerja terbuka atau sehingga anda menjalankan makro dengan baris berikut di dalamnya:

Application.EnableEvents = False

/ p> Dalam Excel 95 / 7.0: Anda perlu menggunakan kaedah OnEntry. Anda menentukan makro yang anda ingin jalankan setelah nilai dimasukkan. Dalam kes ini, pemboleh ubah Application.Caller mengandungi alamat dan nilai yang berubah. Masukkan yang berikut dalam modul baru:

Sub AutoOpen() Worksheets("Sheet1").OnEntry = "CheckIt" End Sub Sub CheckIt() If Application.Caller.Column = 1 Then ThisRow = Application.Caller.Row If Application.Caller.Value> 100 Then Range("B" & ThisRow).Interior.ColorIndex = 3 Else Range("B" & ThisRow).Interior.ColorIndex = xlColorIndexNone End If End If End Sub

Pemeriksaan OnEntry akan tetap aktif sehingga anda menjalankan makro dengan kod berikut:

Worksheets("Sheet1").OnEntry = False

Artikel menarik...