2

私のExcelVBAユーザーフォームには、ユーザーが日付をdd-mm-yy形式で入力する必要があるテキストボックスがあります。入力がの場合は09-22-13、に更新する必要があります22-09-2013。このテキストボックスには、セルのアドレスに設定されたControlSourceプロパティがあります。このセルの値もになるはず22-09-2013です。

私が試したすべてのイベントハンドラーの問題は、ハンドラーがトリガーされる前にControlSourceの値が更新され、アドレスをハードコードしない限りControlSourceの値を変更できないことです(これは避けたいものです)。

手伝ってくれる?ありがとう。

Private Sub TextBox_MyDate_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    TextBox_MynDate.Value = Format(TextBox_MyDate.Value, "dd/mm/yyyy")
    ' TextBox_MyDate.ControlSource.Value = TextBox_MyDate.Value does not compile
    DoEvents
End Sub
4

2 に答える 2

2

ここで考慮すべきことがcontrolsource updateあり、変更できないようです。前者が存在する前にイベントevent orderを追加してみてください。worksheet_changetextbox eventtextbox event

参照:

  • ContolSourceを使用すると、関連するセルが変更されるたびにテキストボックスが更新されると書かれていますが、その逆に注意してくださいテキストボックスを変更すると、セルが変更されます
于 2013-01-22T16:57:09.440 に答える
0
   Private Function GetCtrlSourceStr$()
        On Error Resume Next
        GetCtrlSourceStr = wCtrl.ControlSource
   End Function

''フォームがアンロードされ、ワー​​クシートの編集によってシートFoFiCriteriaの値が変更された場合、'フォームのテキストボックスまたはチェックボックスはこれらの変更にリンクされません。フォームは開いていますが、FoFiCriteriaはアクティブシートではありません'これらのControlSource文字列は'RaAdd = ra(3、Ci).Address(False、False、、True) '.ControlSource = Mid(RaAdd、InStr(RaAdd、 "]")+ 1)

'したがって、フォームでの編集は、そのシート上のコントロールソースの範囲にリンクする必要があります'したがって、'が必要です

Sub ReGetCtrlSources()
   For Each wCtrl In frd.Controls
        If GetCtrlSourceStr <> "" Then
       wCtrl.Value = Range(wCtrl.ControlSource).Value
    wCtrl.BackColor = Range(wCtrl.ControlSource).Interior.Color
       End If

   Next wCtrl

サブ終了

'Private Sub UserForm_Activate()をアクティブ化するために追加します

   ReGetCtrlSources

   End Sub
于 2017-03-01T07:00:33.620 に答える