2016-06-14 11 views
0

複数のページを持つユーザーフォームがあります。それぞれにワークシートに戻す前に数値を確認したいテキストボックスがあります。複数ページのユーザーフォームのテキストボックスの値を確認する

私はこれを行う他、通常のユーザーフォームがあります。これは正常に動作しますが、私はそれが動作しません。このマルチユーザーフォームと似た何かをしようとすると、

Private Sub myTextBox_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
    OnlyNumbers 
End Sub 

Private Sub OnlyNumbers() 

    If TypeName(Me.ActiveControl) = "TextBox" Then 
     With Me.ActiveControl 
      If Not IsNumeric(.Value) And .Value <> vbNullString Then 
       MsgBox "Sorry, only numbers allowed" 
       .Value = vbNullString 
      End If 
     End With 
    End If 

End Sub 

を。

私は

Me.ActiveControl.ActiveControl

を使用してみましたが、時間エラーを実行し、「オブジェクトはこのプロパティまたはメソッドをサポートしていません」を取得。これは、テキストボックスがフレーム内にあるときに機能しますが、ページは同じように扱われないようです。

答えて

1

これは厄介です。あなたがそれの上に座っているコントロールの親として考えることができるMultiPageコントロール。まず、MultiPageコントロールを選択し、そこからアクティブなコントロールを選択します。

それは次のようになります。

Me.MultiPage1.Pages(Me.MultiPage1.Value).ActiveControl.Name 

ページのプロパティは、あなたが選択するページを選択することができます。これはMultiPageコントロールのインデックスを使用して取得できます(インデックスは1から始まります)。その後、ActiveControlを呼び出して、予期したコントロールを受け取ることができます。

希望すると助かります!

+0

私はいくつかのより多くのと働く何かを見つけたの周りに遊んでいた: Me.MultiPage1.SelectedItem.ActiveControl は、私はあなたの方法があまりにもかかわらず、働くだろうと思います。ありがとう。 – KingKong

+0

うん、それもうまくいくはずです。もう1つの方法では、アクティブなマルチページの一部ではないコントロールを選択することができます。 –

関連する問題