如何根据另一个文本框的数量替换最后一个字符

How to replace the last characters depending on the count of another textbox

我正在尝试为注册表创建自定义自动编号。

在我的表单中,我有一个获取当前记录编号的未绑定文本框 (txtposition)。这个数字是实际的记录数。如果我有 10 条记录并且我在最后一条记录,它将显示为 10。

我有另一个文本框 (txtref),默认值为 0000。我需要得到的是 txtposition 的计数(如果 10 表示 2,100 表示 3)并将 txtref0000 替换为 00100100,具体取决于数 txtposition

我已经有另一个未绑定的文本框,如果需要,它将连接结果。我正在尝试通过以下查询完成此操作:

spacepos: InStr([Forms]![Jobsheet]![Text516],"0000")
FN: Left([Forms]![Jobsheet]![Text516],[spacepos])

我知道这需要 INSTRLENRIGHTLEFT 的组合,当然还有 REPLACE 功能。

我的编码知识太基础了,但我能跟上。

用于获取txtposition的当前记录号的代码:

Private Sub Form_Current()
    On Error GoTo err_form_current

    Dim rst As Recordset
    Set rst = Me.RecordsetClone
    rst.Bookmark = Me.Bookmark
    Me.txtPosition = rst.AbsolutePosition + 1

exit_form_current:
    Set rst = Nothing
    Exit Sub

err_form_current:
    If Err = 3021 Then 'no current record
        Me.txtPosition = rst.RecordCount + 1
    Else
        MsgBox Error$, 16, "Error in Form_Current()"
    End If
    Resume exit_form_current
End Sub

只需保存一个普通数字,然后使用格式显示前导零。 Format(10,"0000") 将显示为字符串 0010。不需要 VBA。甚至可以使用 Format 属性 或 Format 函数格式化自动编号字段。但是,如果不能在顺序上留空,那么自动编号可能不符合您的要求。