ms-access缩短了vba代码

1 ms-access vba

我在我的项目中使用了以下代码:

txtVoornaam.Locked = False
txtVoornaam.BorderStyle = 4
txtVoornaam.BorderColor = RGB(255, 165, 0

txtAchternaam.Locked = False
txtAchternaam.BorderStyle = 4
txtAchternaam.BorderColor = RGB(255, 165, 0)

txtAfdeling.Locked = False
txtAfdeling.BorderStyle = 4
txtAfdeling.BorderColor = RGB(255, 165, 0)
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法不在我的代码中显示或缩短它.如果我使用它几次,代码会变得很长.

Mat*_*don 5

每当你需要重复一套说明而不是复制+面食代码时,你的第一反应应该是问自己"我怎样才能避免一遍又一遍地复制这个块?" - 解决方案几乎总是提取方法并对其进行参数化.

所以你采取一个重复的块:

txtAchternaam.Locked = False
txtAchternaam.BorderStyle = 4
txtAchternaam.BorderColor = RGB(255, 165, 0)
Run Code Online (Sandbox Code Playgroud)

然后在新范围内最后一次复制它:

Private Sub RenameMe()
    txtAchternaam.Locked = False
    txtAchternaam.BorderStyle = 4
    txtAchternaam.BorderColor = RGB(255, 165, 0)
End Sub
Run Code Online (Sandbox Code Playgroud)

然后你提取参数:

Private Sub RenameMe(ByVal target As Control)
    target.Locked = False
    target.BorderStyle = 4
    target.BorderColor = RGB(255, 165, 0)
End Sub
Run Code Online (Sandbox Code Playgroud)

然后用调用该新过程替换重复的块:

RenameMe txtVoornaam
RenameMe txtAchternaam
RenameMe txtAfdeling
Run Code Online (Sandbox Code Playgroud)

或者,如果仍然乏味,您可以迭代控件并在循环体中调用该过程 - 无论哪种方式最适合您.

如果您需要更多灵活性,请提取更多参数并Optional根据需要进行制作:

Private Sub RenameMe(ByVal target As Control, Optional ByVal lockCtrl As Boolean = False, Optional ByVal brdrStyle As Long = 4, Optional ByVal brdrColor As Long = 42495)
    target.Locked = lockCtrl
    target.BorderStyle = brdrStyle
    target.BorderColor = brdrColor
End Sub
Run Code Online (Sandbox Code Playgroud)

现在困难的部分是给出RenameMe一个有意义的名称,恰当地传达了这里正在发生的事情.我建议FormatControl或类似的东西.