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サブなどを実行するにはどうすればよいですか?
exit関数をafterupdateに変更することで、私はexit関数を動作させることができました。私が今取得する問題は、ボックス内をクリックすると初めて実行されるということです。 – Histerical
これは、AfterUpdate(およびBeforeUpdate)が、テキストボックスの内容が実際に変更された場合にのみトリガーするためです。 Enterイベントが値を ""に変更すると、コンテンツは最初に自動的に変更されます。次回入力時には値はすでに ""で、変更されていません。 編集:テキストボックスに何かを入力して終了し、そのエントリを削除してからもう一度やり直してください。その後、i)値が変更され、ii)値が空白のため再起動します。 – Swaffle
私はUserFormを開くと、 "Total Expense"と表示されます。私はそれをクリックし、それを入力するための空白に更新します。何か他のもののためにそれを残して空白のままにすると、それは再び "総経費"に更新されます。しかし、戻ってくると、それは空白にならずに "総経費"として残ります。 – Histerical