「通常の」方法(リンクされたテーブル)ではデータシートを検証できないため、プログラムでデータシートを検証しています。悪意を入力したことをユーザーに伝える「通常の」方法は、MsgBox ポップアップでユーザーを罰することです。フォームのラベルにメッセージを表示し (これは機能します)、問題のあるセルの背景色を変更したいと考えています。セルの色は条件付き書式でしか変更できないので (これはうまくいきます)、先頭にスペースがあるセルを強調表示するルールをいくつか設定しました。
パズルの最後のピースは、問題のあるセルの値を先頭のスペースで変更して、条件付き書式で強調表示されるようにすることです。しかし、その部分は機能していません。セルの値を変更しても何も起こりません。新しい値で自分自身を更新するようにデータシートに指示する必要があるかのように感じます。
これが私がこれまでに持っているものです:
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim isValid As Boolean
isValid = myDataSheetRow_IsValid()
' if the page is valid, don't cancel the update
Cancel = Not isValid
End Sub
Private Function myDataSheetRow_IsValid() As Boolean
' validate our data as it cannot be validated in the GUI due to the way linked tables work
myDataSheetRow_IsValid = True
Dim myErrMsg As String
myErrMsg = ""
'evaluate my column called ABC
If (IsNull(Me.ABC)) Then
myErrMsg = myErrMsg + "ABC cannot be blank" + vbNewLine
'---------------------
'PROBLEM START
'---------------------
'Set the cell value to what it was plus a leading space
'Because I have set up conditional formatting on the datasheet
'So that leading spaces highlights the cell for attention
Me.ABC= " " + Me.ABC 'trigger conditional formatting ??
'---------------------
'PROBLEM END
'---------------------
End If
' ... more validating ...
' done validating
Call Me.Parent.UpdateErrorMsgArea(myErrMsg)
If (Len(myErrMsg) > 1) Then
myDataSheetRow_IsValid= False
End If
End Function
データシート セルの値をプログラムで設定するにはどうすればよいですか?
私はこの方法で試してみましたが、うまくいきません - データシートで何も変更されていません。プログラムで変更された新しい値を表示するためにデータシートが更新されていないようです。