VBA İçinde Dosyaları Seçme - Excel İpuçları

İtalya'dan Renato soruyor:

Listeden seçerek VBA'da bir çalışma kitabını nasıl açabilirim? Bir makroyu kaydettiğimde, makroda seçilen dosyanın adını sabit kodlar.

VBA'da GetOpenFileName adlı bir komut var. Dosya Aç kutusunu görüntüler. Bir dizine gidebilir, dosyayı seçebilir ve ardından Aç'a tıklayabilirsiniz. Bu noktada komut dosyayı açmaz, sadece adı programınıza geri gönderir. İşte kullanılan kodun bir örneği:

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 soruyor:

Bir dosya kapatılmadan veya kaydedilmeden önce bir makroyu nasıl çalıştırabilirim?

Makronun "ThisWorkbook" ile ilişkili kod bölmesine girilmesi gerekir. Sağdaki açılır menüden Kapatmadan Önce veya Kaydetmeden Önce öğesini seçin.

Ken şöyle yazıyor:

En az 16 kez döngü yapan bir çalışma sayfası olay işleyicim var. Ne oluyor?

Ken'in işleyicisi basitti - giriş sayısal değilse, girişi büyük harfe çevirirdi. İşte sorun. Girişin değerini büyük harfe değiştirdiğinde, bu başka bir çalışma sayfası değişikliğidir ve olay tekrar tetiklenir. Değişiklik olayı her tetiklendiğinde, Ken çalışma sayfasını değiştirirdi ve makro, çağrı yığını belleği bitene kadar yinelemeli olarak çağrılırdı.

Çözüm, değeri büyük harfe değiştirirken olayların çalışmasını geçici olarak durdurmaktır. Bunu, Application.EnableEvents değerini False olarak değiştirerek yapabilirsiniz. İşte düzeltilmiş makro:

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

İngiltere'den Andy, bugünün en ilginç sorusunu soruyor.

Bir çalışma kitabında birkaç başka çalışma kitabı oluşturan bir VBA rutinim var. Her yeni çalışma kitabına dinamik olarak yeni çalışma kitaplarını oluşturan çalışma kitabına işaret edecek bir köprü ekleyebilmek istiyorum.

Andy - bu harika bir fikir. Kodunuzu görmenin yararı olmasaydı, bunun gibi bir şeyin işe yarayacağını hayal edebiliyorum:

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

Ilginç makaleler...