ここにはわかりません。 (クラッシュを再現するために必要な最低限にストリップダウン)このクラスモジュールを考える 開いた括弧を入力するとExcelがクラッシュする
: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
私はこのコードで入力するとExcelが完全にアウトクラップス、なぜ誰も教えてもらえます:
Sub MakeExcelCrash()
With TestCrashClass(
この時点で
、Iこの素敵なメッセージ:
括弧を付けずに完全な手順を入力して後で追加しようとしても、同じクラッシュが発生します。
Excelをクラッシュさせないようにする唯一の方法は、このコード行に()
のセットをコピーして貼り付けることです。
Sub MakeExcelCrash()
With TestCrashClass()
Debug.Print .Data
End With
End Sub
Init()
方法がある場合は、パラメータを-でも、オプション1 - それは開口部の括弧が入力されたときにクラッシュすることはありません。
なぜ私はについてもっと興味がありますか?なぜこれが起こるのですか?それは実際に私のコードで頻繁に起こることはありませんし、私はそれを修正することができますが、私はアプローチの変化でそれを修正することができますが、私は本当にこれらのクラッシュを引き起こしているのか分からない。 VBAの内部作業についてもっと知っている人は、私にそれを説明することができますか?
入力中にExcelが何らかの自動補完機能を提供していますか? – Carcigenicate
私はあなたのクラスのインスタンスを作成するメソッドを作成すると、デフォルトメソッドが無限ループを作成していると思います。おそらく、その行をタイプするときにクラスのコードが評価されている可能性があります...そのメソッドの目的は何ですか? –
あなたは 'Init'をデフォルトのメンバーにしたので、VBEはそれに基づいてIntellisenseのドロップダウンをしようとします - それが無限ループに入るとすぐに(' Init'は同じクラスの別のインスタンスであり、同じ既定のメンバでも同様です)...そしてExcelがクラッシュします。 –