İşte anlamadığım bir tane. (Kilitlenmeyi yeniden gerekli minimumda soyunmuş) Bu sınıf modülü Verilen Açık parantez yazarken Excel çökmesi
:VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
END
Attribute VB_Name = "TestCrashClass"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Public Function Init() As TestCrashClass
Attribute Init.VB_UserMemId = 0
Dim tcc As New TestCrashClass
Set Init = tcc
End Function
Public Property Get Data() As String
Data = "test data"
End Property
ben bu kodu yazdığınızda, Excel tamamen dışarı kreps neden kimse bana söyleyebilir:
Sub MakeExcelCrash()
With TestCrashClass(
Bu noktada
, ben bu güzel mesajı:
Hatalı parantezler olmadan tam bir yordam yazıp daha sonra bunları eklemeyi denesem de, aynı çökme olur.
Excel'i çökmesine izin vermemin tek yolu, başka bir yerden bu kod satırına ()
kümesini kopyalamak/yapıştırmaktır.
Sub MakeExcelCrash()
With TestCrashClass()
Debug.Print .Data
End With
End Sub
Init()
yöntem varsa parametreyi bile opsiyonel tek o açılış parantez yazdığınız zaman kilitlenmez.
neden daha çok merak ediyorum; bunun etrafından daha fazla şey; Aslında bu benim kodumda sık sık ortaya çıkmaz ve ne zaman olduğu zaman bunu bir yaklaşım değişikliği ile çözebilirim, ama bu çökmelere neyin sebep olduğunu bilmediğim için gerçekten hüsrana uğruyorum. Yani belki de VBA'nın iç işleyişi hakkında daha fazla bilgi sahibi olan biri bunu bana açıklayabilir mi?
Excel, siz yazarken bir çeşit otomatik tamamlama sunuyor mu? – Carcigenicate
Sınıfınızın bir örneğini oluşturan bir yöntemi varsayılan yöntemde sonsuz bir döngü oluşturduğunu tahmin ediyorum. Muhtemelen bu satırı yazarken, sınıfın kodunun bir değerlendirmesi var ... Bu yöntemin amacı nedir? –
İnit'i varsayılan üyeye yaptığınızdan bu yana, VBE size bunun üzerinden bir Intellisense açılanması vermeye çalışacaktır - bunu yapmaya çalıştığında sonsuz döngüye girer girmez (çünkü dönüş değeri Init', aynı sınıfın başka bir örneğidir, aynı varsayılan üye ile ve benzerleri ... ve Excel çöküyor. –