Excel - Segarkan dan Validasi Data Dari SQL (VBA)

Saya menggunakan Office 2013 dan SQLServer 2008 R2. Saya memiliki proses Excel VBA yang memasukkan daftar komisi penjualan ke dalam database. Salah satu kolomnya adalah SalesRepID yang jelas harus valid. Saat artikel ini ditulis, kami memiliki tim penjualan yang cukup statis, namun kami telah mengakuisisi dua perusahaan lain yang melakukan pekerjaan kurang terspesialisasi, jadi ada sedikit perubahan dalam tenaga penjualan sekarang.

Metode saat ini memiliki daftar perwakilan penjualan dan nama dalam rentang nama yang diurutkan, yang kemudian digunakan sebagai kriteria validasi: pengguna diberikan daftar perwakilan penjualan dalam daftar drop-down di Excel dan ketika mereka memilih salah satu, ia menggunakan VLookup untuk menyisipkan SalesRepID di sel tersembunyi. Ini kemudian digunakan dalam operasi penyisipan.

Apa yang ingin saya lakukan sekarang adalah memberikan tombol segarkan kepada pengguna (dan idealnya menjalankan penyegaran saat terbuka). Beberapa penagihan bekerja di rumah pada akhir pekan, jadi penagihan ini harus dapat dilakukan secara offline (tentu saja, jika perwakilan baru ditambahkan dan mereka belum menyegarkan, mereka tidak akan melihat perwakilan baru).

Saya tidak ingin mendefinisikan apa pun seperti sumber ODBC pada mesin fisik pengguna

Saya mencoba mencari cara untuk menyelesaikan ini. Salah satu caranya adalah dengan menambahkan tombol segarkan yang akan menjalankan kueri, menyisipkan daftar perwakilan penjualan saat ini dan memperbarui rentang (atau menggunakan rentang dinamis) menjadi jumlah rekaman saat ini yang dikembalikan. (Saya berasumsi saya dapat memperbarui alamat rentang bernama, atau rentang dinamis akan diperbarui jika data dimasukkan dari kueri SQL)

Misalnya:

Rentang Awal

1 Tom
2 Dick
3 Harry

Rentang Perwakilan Penjualan = A1:B3

Penyegaran Hit Pengguna: Menghapus konten rentang lama. masukkan daftar baru

Rentang Baru

1 Tom
2 Dick
3 Harry
4 Fred

Rentang Perwakilan Penjualan = A1:B4

Adakah yang bisa memikirkan cara yang lebih baik untuk ini?

Salam

Tanda


person mark1234    schedule 02.03.2015    source sumber
comment
Apa yang sudah kamu lakukan sampai sekarang?   -  person Maciej Los    schedule 02.03.2015


Jawaban (1)


Coba ini untuk rentang dinamis Anda

Dim LastRow as integer
    LastRow = Sheets("yoursheet").Cells(Rows.Count, "A").End(xlUp).Row

    Range("A1:B" & LastRow).name = "SalesReps"

Kode ini bekerja dengan cara yang sedikit tidak intuitif. Cells(Rows.Count, "A") menemukan sel terakhir pada lembar di kolom A (baris 1048576 atau semacamnya).

End(xlUp).Row sama dengan menekan ctrl+up dari sel itu dan mengembalikan nomor baris sel pertama yang berisi informasi.

person JS1991    schedule 02.03.2015
comment
Terima kasih banyak. Bekerja dengan baik, tetapi saya tidak yakin saya mengerti alasannya. Kisaran awal saya adalah I6:J6. Saya jelas mengubah referensi dalam contoh Anda agar sesuai dengan rentang saya, tetapi tidak yakin tentang xlUp. Saya mengira memulai dari baris pertama dan menggunakan xlDown akan menjadi solusi. Apakah contoh Anda dimulai dari akhir seluruh lembar dan dilanjutkan dari sana? Hanya mencoba memahami. Terima kasih Markus - person mark1234; 02.03.2015