Memilih File Dalam VBA - Tips Excel

Renato dari Italia bertanya:

Bagaimana saya bisa membuka buku kerja di VBA memilih dari daftar? Ketika saya merekam makro, itu membuat kode keras nama file yang dipilih di makro.

Ada perintah di VBA yang disebut GetOpenFileName. Ini akan menampilkan kotak Buka File. Anda dapat menavigasi ke direktori, memilih file, lalu klik Buka. Pada titik ini, perintah tidak membuka file, hanya meneruskan nama kembali ke program Anda. Berikut adalah contoh kode yang digunakan:

Sub TestIt() NewFN = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls), *.xls", Title:="Please select a file") If NewFN = False Then ' They pressed Cancel MsgBox "Stopping because you did not select a file" Exit Sub Else Workbooks.Open Filename:=NewFN End If End Sub

Roger bertanya:

Bagaimana cara menjalankan makro sebelum file ditutup atau disimpan?

Makro harus dimasukkan pada panel kode yang terkait dengan "ThisWorkbook". Dari tarik-turun kanan, pilih BeforeClose atau BeforeSave.

Ken menulis:

Saya memiliki penangan kejadian lembar kerja yang berulang, setidaknya 16 kali. Apa yang sedang terjadi?

Penangan Ken sederhana - jika entri non-numerik itu akan mengubah entri menjadi huruf besar. Inilah masalahnya. Ketika dia mengubah nilai entri menjadi huruf besar, itu adalah perubahan lembar kerja lain dan acara akan diaktifkan lagi. Setiap kali peristiwa perubahan akan diaktifkan, Ken akan mengubah lembar kerja dan makro dipanggil secara rekursif, sampai tumpukan panggilan kehabisan memori.

Solusinya adalah menghentikan sementara acara agar tidak berjalan saat Anda mengubah nilai menjadi huruf besar. Anda dapat melakukan ini dengan mengubah nilai Application.EnableEvents menjadi False. Berikut adalah makro yang dikoreksi:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range) If Not IsNumeric(Target.Value) Then Application.EnableEvents = False Target.Value = UCase(Target.Value) Application.EnableEvents = True End If End Sub

Andy dari Inggris menanyakan pertanyaan paling menarik hari ini.

Saya memiliki rutinitas VBA di satu buku kerja yang membuat beberapa buku kerja lainnya. Saya ingin dapat secara dinamis menambahkan hyperlink di setiap buku kerja baru yang akan mengarah kembali ke buku kerja yang menghasilkan buku kerja baru.

Andy - ini ide yang bagus. Tanpa melihat kode Anda, saya dapat membayangkan sesuatu seperti ini akan berhasil:

Sub Testit() Creator = ActiveWorkbook.FullName '… . Andy's code to create the new workbook… . ActiveSheet.Hyperlinks.Add Anchor:=Range("A1"), Address:= _ Creator, TextToDisplay:="Click Here to Return to " & Creator End Sub

Artikel yang menarik...