我正在以编程方式验证我的数据表,因为它不可能以“正常”方式(链接表)进行。告诉用户他们输入错误的“正常”方式是使用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
如何以编程方式设置数据表单元格的值?
我已经尝试过这种方式并且无法正常工作 - 数据表上没有任何更改,就好像数据表没有更新自身以显示我的新编程更改值。
答案 0 :(得分:1)
当Me.ABC
为空...
Me.ABC= " " + Me.ABC
我的印象是你期望该语句在Me.ABC
中存储一个空格,但它实际上存储了Null。
原因是将Null添加到某些内容会使您无效。 某事是数字还是文本字符串并不重要; 添加 Null仍然为您提供Null。
但是,如果连接(使用&
运算符)Null并带有文本字符串,则会返回文本字符串。
Me.ABC= " " & Me.ABC
但是既然你知道Me.ABC
当时是空的,那么连接并没有任何好处。只分配空格字符......
Me.ABC = " "