Excel VBA untuk memanggil makro tunggal dengan beberapa perubahan lembar kerja independen

Saya telah menggunakan kode VBA Perubahan Lembar Kerja berikut yang diterapkan pada referensi sel tunggal, dan digunakan untuk memanggil makro yang bergantung pada pilihan dari daftar validasi data. Peristiwa yang dipicu oleh makro berlaku untuk baris sel aktif.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address(True, True) = "$H$2" Then
    Select Case Target
        Case "Yes"
            Call StandardEntry
        Case Else
            'Do nothing
    End Select
End If
End Sub

Saya sekarang ingin dapat menerapkan peristiwa perubahan lembar kerja ini untuk dipicu oleh masing-masing sel dalam kolom yang sama, menghasilkan peristiwa yang sama dalam baris sel aktif dan tidak memengaruhi baris lainnya. Validasi data yang identik telah diterapkan ke sel lain di kolom.

Saya sangat menghargai bantuan dalam menulis kode yang sesuai atau menyesuaikan kode di atas agar sesuai.


person ManbyRiver    schedule 03.11.2016    source sumber
comment
StandardEntry, yang tidak Anda tampilkan, akan menjadi bagian dari solusi di sini, jadi mungkin tunjukkan?   -  person Tim Williams    schedule 03.11.2016
comment
Maksud Anda, Anda hanya ingin memanggil StandardEntry ketika ada sel di kolom H yang diubah dan memiliki nilai Ya? Jika ya, mungkin ubah If Target.Address(True, True) = "$H$2" Then menjadi If Target.Column = 8 Then. (Tetapi, jika itu yang Anda maksud, kata berurutan dalam pertanyaan Anda akan membingungkan.)   -  person YowE3K    schedule 03.11.2016
comment
@ YowE3K ya itulah yang saya maksud dan perubahan kode berfungsi dengan sempurna. Terima kasih! Saya sekarang akan mengedit pertanyaan saya untuk menghilangkan kebingungan dan kemudian menambahkan ini sebagai jawabannya. Terima kasih lagi. Saya menghargai bantuan Anda.   -  person ManbyRiver    schedule 03.11.2016


Jawaban (1)


Terima kasih @YowE3K!

Berubah

If Target.Address(True, True) = "$H$2" Then

to

If Target.Column = 8 Then

berhasil dan merupakan solusi yang sangat sederhana! Ya ampun!

person ManbyRiver    schedule 03.11.2016
comment
Jangan lupa bahwa Target bisa berupa rentang multi-sel, dan Target.column akan mengembalikan kolom sel kiri atas dalam rentang yang lebih besar... - person Tim Williams; 03.11.2016
comment
Gunakan Target.Cells.Count <> 1 atau For Each rng In Target, Dim rng As Range dan If rng.Column = 8 Then. - person user3819867; 03.11.2016