Saya memiliki skrip yang menyalin bagian data dari satu file ke file lainnya. File tujuan dibagikan di antara pengguna. Setelah salinan, saya menyimpan dan menutup file tujuan dan mengeluarkan pesan "Diperbarui".
Kode Saya:
...
Workbooks(CurrFile).Activate
Worksheets(CurrHosp).Range("A1").Select
Selection.PasteSpecial xlPasteValues
TimeStamp = Now()
ActiveSheet.Range("A5").Value = TimeStamp
ActiveSheet.Range("A1").Select
Workbooks(ModelFile).Close SaveChanges:=False
Workbooks(CurrFile).Close SaveChanges:=True
MsgBox ("Destination Updated")
Else
MsgBox ("No Source File Selected")
End If
Application.StatusBar = False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Hari ini, seorang pengguna meninggalkan mejanya dengan kotak pesan "Diperbarui" terbuka. Ini meninggalkan file tujuan (Currfile) dalam keadaan terbuka mencegah pengguna lain memperbaruinya.
Kapan sebenarnya Excel menutup file setelah menerbitkan Workbooks (). Tutup pernyataan? Apakah itu ketika subrutin selesai? Bagaimana saya bisa mendeteksi itu benar-benar ditutup sebelum saya mengeluarkan kotak pesan "Diperbarui"?
Apakah kode VBA terletak di buku kerja yang ingin Anda tutup?
—
Ƭᴇcʜιᴇ007
Tidak. Sumber data untuk disalin dan tujuan adalah dua file tambahan. 3 file total.
—
B540Glenn
Menyelipkan
—
Mathieu Guindon
DoEvents
sesaat sebelum menampilkan MsgBox
, sehingga membiarkan Excel menangani penutupan. Anda tidak ingin "mendeteksi bahwa itu benar-benar ditutup", Anda hanya ingin memberi Excel kesempatan untuk melakukan hal itu sebelum Anda melakukan sesuatu yang lain (misalnya menampilkan kotak pesan) - DoEvents
akan melakukan hal itu.
@ Mat's Mug, DoEvents bekerja. Jika Anda ingin memasukkannya dalam bentuk jawaban, saya akan menerimanya. Maaf butuh waktu lama untuk merespons. Butuh beberapa saat untuk menghasilkan file uji yang sesuai.
—
B540Glenn