6

ユーザーフォームを呼び出す私のモジュールコード:

PreInfo.Show

私のユーザーフォームコード:

Public Sub PreInfo_Initialize()
Dim Invoice, Name, Model, Crank, MyValue1, StrokeL As Variant
'Dim ListBox1 As ListBox
Dim c As Range
Dim oneControl As Object

'Empty Text Boxes and Set Focus
For Each oneControl In PreInfo.Controls
Select Case TypeName(oneControl)
Case "TextBox"
    oneControl.Text = vbNullString
'Case "ListBox"
    'oneControl.AddItem "Test"
End Select
Next oneControl

With lbTest
    .AddItem Item:="2 Cylinders" '3 different syntax used as test to isolate issue
    .AddItem "3 Cylinders"
    .AddItem ("5 Cylinders")
End With

Invoice.TextBox.SetFocus 'Activate?

End Sub

私のモジュールコードは私のユーザーフォームの初期化サブをトリガーしないため、そのサブでは何も実行されません。なぜこれが起こっているのかわかりません。どんな助けでも大歓迎です!

このコードを実行すると、ユーザーフォームがポップアップしますが、リストボックスのアイテムは追加されません

4

5 に答える 5

3

私は同じ問題を抱えていて、非常に簡単な解決策を見つけました。

あなたの場合、使用する代わりに

Public Sub PreInfo_Initialize()     

使用する

Public Sub UserForm_Initialize()      
于 2014-11-04T01:58:00.917 に答える
2

私はそれを理解しました。簡単に言えば、私のモジュールには次のコードが必要でした。

Userform.Userform_Activate 'THIS IS THE NEW CODE
Userform.Show 'existing code, unchanged

ユーザーフォームが開く前にアクティブ化するように通知します(「初期化」を呼び出し、ユーザーが変更するユーザーフォームを表示します)。

Userform.Show は、このアクティベーション サブルーチンを実行するように指示する必要がありますが、私のものは何らかの理由でそうではありませんでした。これにより、Userform.Userform_Activate が本来あるべきように呼び出されなかった理由を特定するまで、問題が修正されます。

于 2013-06-06T16:18:31.477 に答える