VBA memperbarui sel yang salah


0

Saya baru saja memulai pekerjaan baru. Ini adalah posisi manajemen dan perusahaan tidak memiliki banyak hal di departemen TI. Karena itu, saya telah mencoba membuat alat manajemen saya sendiri. Rekan-rekan saya juga takut dengan Access dan tidak ingin ada keterlibatan dalam apa pun yang saya buat melalui itu. Alasan saya merasa ini relevan untuk disebutkan adalah karena solusi yang paling jelas untuk masalah saya saat ini adalah 'hanya menggunakan Akses' yang mungkin akhirnya harus saya lakukan jika ternyata saya keluar dari kedalaman saya di sini.

Salah satu alat yang saya kerjakan saat ini adalah matriks keterampilan / rencana suksesi. Pada satu lembar kerja saya memiliki daftar tugas yang diperlukan sesuai dengan deskripsi pekerjaan karyawan dan apakah mereka memerlukan pelatihan atau tidak.

Saya ingin semua interaksi pengguna terjadi pada lembar kerja 'pencarian' sehingga data 'back end' tidak dimanipulasi pada sumbernya secara manual oleh siapa pun tetapi saya jika perlu. Setelah menjalankan pencarian, salinan makro yang direkam, pasta dan format satu set rumus Pencocokan Indeks dari lembar lain untuk menyajikan hasil. Dalam hal ini, daftar tempat pelatihan karyawan adalah 'Tidak'.

Dari hasil daftar ini, saya ingin pengguna dapat memilih sel yang ingin mereka perbarui, dan klik tombol untuk memperbarui sel sumber dari 'Tidak' ke 'Ya'. Di bawah ini adalah tebakan saya bagaimana untuk mencapai ini. Saya tidak tahu apa-apa tentang VBA.

Sub updateyes()

SendKeys "(^[)"
Worksheets("Sheet1").Activate
ActiveCell.Value = "Yes"
Sheets("Search & Update").Select
Range("A6").Select


End Sub

Sendkey itu sendiri berhasil dipindahkan ke sel sumber dan memilihnya. Secara keseluruhan, kode di atas hanya memperbarui sel apa pun yang terakhir dipilih secara manual pada lembar kerja 'back end'.

Saya tidak dapat membuat referensi kode sel khususnya karena tergantung pada sel mana yang sedang dipilih oleh pengguna.

Apa yang ingin saya capai dalam ringkasan adalah ini:

Pengguna memilih sel untuk memperbarui, tombol klik. Makro berjalan ke sel sumber yang dipilih, pembaruan dari tidak ke ya, kembali ke lembar kerja 'pencarian'.

Mudah bukan? Dari tanggapan yang sudah saya miliki, sepertinya saya mungkin keluar dari liga saya. Banyak terima kasih sebelumnya.


2
Bisakah Anda memberikan lebih detail masalah apa yang Anda coba pecahkan dengan kodenya? Tampaknya menggunakan sendkey tidak akan menjadi solusi yang baik (biasanya tidak) jadi jika kami mengetahui seluruh masalah Anda, kami mungkin dapat membantu memberi Anda solusi keseluruhan yang lebih baik.
Eric F

Jawaban:


3

Kode Anda mengandalkan sangat rapuh Selectdan Activate, di atas secara implisit merujuk buku kerja aktif dan lembar aktif.

Worksheets("Sheet1").Activate '~> implicitly refers to ActiveWorkbook
ActiveCell.Value = "Yes" '~> implicitly refers to ActiveSheet
Sheets("Search & Update").Select '~> implicitly refers to ActiveWorkbook
Range("A6").Select '~> implicitly refers to ActiveSheet

Ini akan menjadi temanmu:

Dim sheetOne As Worksheet
Set sheetOne = Worksheets("Sheet1")

Dim searchSheet As Worksheet
Set searchSheet = Worksheets("Search & Update")

Sekarang, alih-alih memilih dan mengaktifkan sesuatu, gunakan referensi eksplisit ini .

Alih-alih ini:

ActiveCell.Value = "Yes"

Melakukan hal ini:

sheetOne.Range("A6").Value = "Yes"

(jika itu yang ingin dilakukan oleh kode Anda - tidak terlalu jelas apa yang seharusnya dilakukan)


Di situlah saya akan mencoba dan merekomendasikan kepadanya juga .. Masih sangat tidak jelas tentang apa yang OP coba capai tetapi merujuk panggilan solid daripada menggunakan kunci kirim, memilih, dan mengaktifkan adalah pendekatan yang jauh lebih baik.
Eric F

Jawaban Anda telah berguna sebagai tutorial tentang deklarasi vba. Namun, sebagaimana dirinci dalam pertanyaan saya yang sekarang diedit, saya tidak dapat mereferensikan sel tertentu karena bergantung pada apa sel sumber dari sel yang dipilih pengguna. Adakah saran lebih lanjut?
user515914
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.