Masalah dengan .find dan Date dalam Aplikasi/Instance Excel yang berbeda

Berharap seseorang mungkin memiliki petunjuk jika ada yang bisa saya lakukan untuk mengatasi masalah yang saya alami. Mungkin sulit untuk menambahkan kode yang saya gunakan karena ukurannya yang sangat besar.

Saya punya tabel dengan tanggal kalender di kolom pertama. Semuanya dalam format dd/mm/yyyy. Di VBA saya ingin mencari tanggal dan menemukan nomor baris dalam kalender menggunakan yang berikut ini;

FirstRow = Workbooks(WorkbookSelected.Name).Sheets("Tables").Columns(1).Find(ConfirmedDate, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookAt:=xlWhole).Row

Tanggal yang Dikonfirmasi disimpan sebagai variabel Tanggal, diambil dari kalender juga, namun ada penambahan hari ke dalamnya. Saya mencari di dua buku kerja berbeda untuk menemukan Baris Pertama. Jika kedua buku kerja berada dalam aplikasi/instance excel yang sama maka kode ini berfungsi dengan baik.

Tetapi jika saya membuka buku kerja ke-2 di excel baru, terjadi kesalahan karena tanggal tidak ditemukan. Ada yang terjadi dengan tanggal di aplikasi ke-2. Jika saya menggunakan format(ConfirmedDate, "dd/mm/yyyy") maka akan menemukannya di buku kerja ke-2. Namun kode itu tidak akan berfungsi di buku kerja aslinya. Kode serupa dengan di atas, tetapi hanya merujuk pada Instance Excel yang perlu diperhatikan. Saya mendapatkan Runtime Error 91 ketika tidak menemukannya.

FirstRow = ExcelInstanceSelected.Workbooks(WorkbookSelected.Name).Sheets("Tables").Columns(1).Find(ConfirmedDate, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookAt:=xlWhole).Row

FirstRow = ExcelInstanceSelected2.Workbooks(2ndWorkbookSelected.Name).Sheets("Tables").Columns(1).Find(ConfirmedDate, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookAt:=xlWhole).Row

Saya mencoba mencari cara untuk menemukan tanggal di kalender, apa pun aplikasi Excel yang saya gunakan. Saya telah mencoba membuka buku kerja dengan set lokal ke true (tidak membantu). Saya telah mencoba kombinasi format, cdate, cdbl, lookin:=xlformulas. Tidak ada yang bisa berfungsi dengan kedua buku kerja.

Ini membuatku gila. Saya hanya dapat berasumsi bahwa .find di buku kerja ke-2 mengubah format Tanggal Konfirmasi yang disimpan ke format AS m/hh/tttt. Saya hanya tidak dapat menemukan cara untuk memastikan kedua tanggal dapat diformat menjadi dd/mm/yyyy tergantung bagaimana tanggal tersebut dimulai.

Terima kasih banyak atas bantuannya.

Cel


person Celeggur    schedule 09.02.2020    source sumber
comment
Mengapa menggunakan Workbooks(WorkbookSelected.Name).Sheets dan bukan hanya WorkbookSelected.Sheets?   -  person K.Dᴀᴠɪs    schedule 09.02.2020
comment
Ini hanyalah cara saya awalnya mempelajari cara menggunakan melihat buku kerja yang berbeda. Saya pasti bisa mengubahnya, tapi itu tidak menyelesaikan masalah ini. Itu adalah menemukan buku kerja yang benar.   -  person Celeggur    schedule 09.02.2020
comment
Saya tidak bermaksud mengatakan bahwa ini akan memperbaiki masalah, hanya saja tidak masuk akal. Ini seperti mengatakan SUM(1+2) = 3 bukannya 3 = 3. Anda tidak perlu menggunakan fungsi (Workbooks()) untuk mendapatkan objek buku kerja, padahal Anda sudah memiliki objek buku kerja tersebut.   -  person K.Dᴀᴠɪs    schedule 09.02.2020
comment
Saya menghargai Anda menunjukkannya, saya akan mengubahnya dalam kode saya.   -  person Celeggur    schedule 09.02.2020
comment
Anda tidak perlu mengubahnya, saya hanya berpikir saya akan menunjukkannya. Anda tidak dapat belajar jika kita tidak pernah mengatakan apa pun :-)   -  person K.Dᴀᴠɪs    schedule 09.02.2020
comment
Ini adalah hal yang baik untuk ditunjukkan. Ini akan secara dramatis mengurangi ukuran kode saya. Bagian dari masalah belajar sendiri, saya yakin saya telah melakukan banyak hal yang bukan cara terbaik untuk melakukannya.   -  person Celeggur    schedule 09.02.2020
comment
Excel tidak memiliki tipe data tanggal. Tanggal disimpan sebagai nomor seri dengan 1= 1-Jan-1900 atau 1-Jan-1904. VBA memang memiliki tipe data tanggal dan menemukan tanggal pada lembar kerja excel bisa jadi rumit. Lihatlah Rentang VBA Excel. Temukan Tanggal Itu Rumusnya   -  person Ron Rosenfeld    schedule 09.02.2020
comment
@K.Davis - Sesuatu yang perlu diperhatikan. Saya mencoba mengubah objek buku kerja seperti yang Anda sarankan, sayangnya tidak berhasil karena harus memilih Aplikasi Excel. Tapi ini berguna jika saya hanya menggunakan satu contoh. Jadi terima kasih.   -  person Celeggur    schedule 10.02.2020
comment
@Ron - Saya dengan cepat menguji loop Anda harus menemukan tanggal, sementara ini berhasil, saya tidak tahu apakah itu adalah sesuatu yang dapat saya gunakan saat ini (skala waktu terlalu pendek untuk memperbaiki kode). Saya masih tidak mengerti mengapa pencarian Tanggal Inggris berfungsi di satu buku kerja, namun tanggal tersebut dikonversi ke format AS saat mencari di Aplikasi Baru. Saya bisa mengatasinya dengan mengubah format tanggal dalam tabel agar tidak berubah dengan pengaturan regional. Namun hal ini memerlukan penempatan format() ke dalam setiap .find.   -  person Celeggur    schedule 10.02.2020
comment
Mencari nomor pokok di Excel relatif mudah. Sepertinya Anda harus mengubah kode Anda.   -  person Ron Rosenfeld    schedule 10.02.2020