2016-04-28 16 views
0

ExcelのユーザーフォームでテキストボックスをHTMLテキストボックスのように更新する方法を解明しようとしています。たとえば、デフォルト値が「名」に設定されていて、そのテキストボックスをクリックすると、それが消えて入力できます。クリックすると、何も入力しなかった場合は、デフォルトの「ファーストネーム」。ユーザーフォームのテキストボックスがhtmlテキストボックスのように動作するようにする

私はこれと同じ種類のことについて尋ねてきましたが、誰も私のために働いていません。ここまでは私のコードです。

Sub QCToolsForm() 
QCTools.Show vbModeless 
End Sub 

Private Sub RUBSTotalExpense_Enter() 
Debug.Print "Enter" 
If Me.RUBSTotalExpense.Value = "Total Expense" Then 
    Me.RUBSTotalExpense.Value = "" 
End If 
End Sub 

Private Sub RUBSTotalExpense_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
Debug.Print "Exit" 
If Me.RUBSTotalExpense.Value = "" Then 
    Me.RUBSTotalExpense.Value = "Total Expense" 
End If 
End Sub 

Private Sub UserForm_Initialize() 
updateDefault 

End Sub 

Public Function updateDefault() 

If Me.RUBSTotalExpense.Value = "" Then 
    Me.RUBSTotalExpense.Value = "Total Expense" 
End If 

End Function 

ユーザーフォームを閉じるまでexitサブが実行されていません。私はまた、彼らと全く運がないと失って、焦点を合わせてみました。私はまた、前と後の更新を試みましたが、彼らは初めての作業です。値が "Total Expense"の場合は、ボックスをクリックするたびに消えてしまいます。テキストボックスを離れるときにexitサブなどを実行するにはどうすればよいですか?

Userform

答えて

1

出入りのために私はあなたのコードを使用してみました、それは、テストユーザーフォームと私のために働きました。フィールドを正しく更新していて、テキストボックスを選択したときに「Enter」を、ユーザーフォーム上で何かを選択したときに「Exit」を印刷します。トリガを終了するには、ユーザフォーム上の何かにフォーカスを移す必要があることに注意してください。単に他の場所をクリックするだけでは、テキストボックスからフォーカスが外れます。別のテキストボックスや他のコントロールをクリックする必要があります。

私はあなたのコードが実行されていることを確認することができますように、Debug.Printを使って試してみる方法を正確に観察することをお勧めします。

Private Sub TextBox1_Enter() 
    Debug.Print "Enter" 
    If TextBox1.Value = "Total Expense" Then 
     TextBox1.Value = "" 
    End If 
End Sub 

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
    Debug.Print "Exit" 
    If TextBox1.Value = "" Then 
     TextBox1.Value = "Total Expense" 
    End If 
End Sub 
+0

exit関数をafterupdateに変更することで、私はexit関数を動作させることができました。私が今取得する問題は、ボックス内をクリックすると初めて実行されるということです。 – Histerical

+0

これは、AfterUpdate(およびBeforeUpdate)が、テキストボックスの内容が実際に変更された場合にのみトリガーするためです。 Enterイベントが値を ""に変更すると、コンテンツは最初に自動的に変更されます。次回入力時には値はすでに ""で、変更されていません。 編集:テキストボックスに何かを入力して終了し、そのエントリを削除してからもう一度やり直してください。その後、i)値が変更され、ii)値が空白のため再起動します。 – Swaffle

+0

私はUserFormを開くと、 "Total Expense"と表示されます。私はそれをクリックし、それを入力するための空白に更新します。何か他のもののためにそれを残して空白のままにすると、それは再び "総経費"に更新されます。しかし、戻ってくると、それは空白にならずに "総経費"として残ります。 – Histerical

関連する問題