Tümü,Çalışma zamanı hatası '9': aralık dışında simge - Excel VBE kapalı olduğunda sadece
Ben bir Excel makro bir bazı VBA kodu ile bir hata dönük ediyorum.
- bazlı hücre aralığı yeni bir çalışma sayfası oluşturmak için kod, biçim çalışan bir modül var o ve bu aynı modülü içinde
- değerlerin bir demet eklentinin, ben belirleyebileceğimiz: İşte çalışılıyor iş akışı var son satırda (önceki adımlara bağlı olarak her zaman farklı olacaktır)
Bu aralığı öğrendiğimde, yeni oluşturulan çalışma sayfalarını kododule yazmak için aşağıdaki kodu kullanıyorum, böylece bir 'change_event' kurabilirim. Sadece change_event Sadece belirlenen aralıkta değerler değiştirildiğinde tetiklemek istiyorum: `
Dim Startline As Long Startline = 1 Dim x As Integer x = Errors.Count - 1 Dim rng As Range Set rng = Range("D" & LastRow - x & ":" & "D" & LastRow) With ThisWorkbook.VBProject.VBComponents(VRS.CodeName).CodeModule Startline = .CreateEventProc("Change", "Worksheet") + 1 .InsertLines Startline, "Dim rng As Range " Startline = Startline + 1 .InsertLines Startline, "Set rng = Range(" & """" & CStr(rng.Address) & """" & ")" Startline = Startline + 1 .InsertLines Startline, "If Target.Count > 1 Then Exit Sub" Startline = Startline + 1 .InsertLines Startline, "If Intersect(Target, rng) Is Nothing Then Exit Sub" Startline = Startline + 1 .InsertLines Startline, "MsgBox (""Value Changed!..."") " End With
kod belirtilen çalışma sayfasının codemodule aşağıdaki çalışır ve yazıyor:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Range("D58:D62")
If Target.Count > 1 Then Exit Sub
If Intersect(Target, rng) Is Nothing Then Exit Sub
MsgBox ("Value Changed!...")
End Sub`
Bu kod da çalışır ve aralıktaki hücreler değiştiğinde ileti kutusu görüntülenir.
Run-time error '9': Subscript out of range
vurmak ayıklama hattına beni alır:
With ThisWorkbook.VBProject.VBComponents(WS.CodeName).CodeModule
Ama aslında aşağıdaki satırda hata atıyor:
Ancak VBE ile hatayı üretecek kapalıStartline = .CreateEventProc("Change", "Worksheet") + 1
Tamam, bu nedenle kodu, belirtilen çalışma sayfasındaki tüm kodları silmeyi ve her seferinde silme ve yazma yerine yeniden yazmayı değiştirdim. Bu hatanın ortaya çıkmasını engeller, ancak bunun yerine VBE'yi otomatik olarak açar .... VBE'yi kapatmak için aşağıdaki satırı kullanıyorum ... çok ince değil. Daha zarif bir çözüme açığım: Application.VBE.MainWindow.Visible = False – gg7aph
Olası çoğaltılacak [VBA değişen sayfa kod adı Run-Time Error 9: Subscript aralık dışı] (http://stackoverflow.com/questions/ 41022319/vba değiştiren-tabaka kod adı-çalışma-zaman-hata-9-simge Çıkış aralık) – ThunderFrame