通过设置整数变量可能改进代码



我有一个带有 2 个绑定组合框的测试表单。我正在测试要使用的正确代码,以便在第一个组合框上选择的选项会影响第二个组合框的行源。

组合框 1 是国家/地区名称。我将控件名称分配为cb_country。我还创建了一个表tbl_country作为cb_country的行源。选项包括ChinaJapanKoreaMalaysiaPhilippinesThailand

组合框 2 是大写字母。我将控件名称分配为cb_capital.我创建了 2 个不同的表作为可能的行源cb_capital具体取决于在cb_country上选择了哪个国家/地区。

大写表 1 或tbl_cap1列出了BeijingTokyoSeoul,而大写表 2 或tbl_cap2列出了Kuala LumpurManilaBangkok

我希望每当选择ChinaJapanKoreatbl_cap1cb_capital的行源,并在选择MalaysiaPhilippinesThailandtbl_cap2

下面是cb_countryAfter Update事件代码。

Dim frm As Form
Dim fname As String
fname = "frmgeo"
Set frm = Forms(fname)
Dim n() As String
Dim co As Control
Dim ca As Control
n1 = "cb_country"
n2 = "cb_capital"
Set co = frm.Controls(n1)
Set ca = frm.Controls(n2)
Dim c() As String
c1 = "China"
c2 = "Japan"
c3 = "Korea"
c4 = "Malaysia"
c5 = "Philippines"
c6 = "Thailand"
If co = c1 Or co = c2 Or co = c3 Then
ca = Null
ca.Requery
ca.RowSource = "tbl_cap1"
Else
ca = Null
ca.Requery
ca.RowSource = "tbl_cap2"
End If

该表单如我预期的那样工作正常,但是无论如何代码可以改进吗?也许声明一个整数变量并使用 for-next 语句,因为我在这种情况下对变量名称使用整数?

这就是我的做法,期望代码以表单本身执行:

With Me.Controls("cb_capital")
.Value = Null
Select Case Me.Controls("cb_country").Value
Case "China", "Japan", "Korea":
.RowSource = "tbl_cap1"
Case "Malaysia", "Philippines", "Thailand":
.RowSource = "tbl_cap2"
Case Else
'Raise an error for example.
End Select
.Requery 'I also don't think that it is necessary.
End With

一些解释:

  • 由于代码以保存控件的形式运行,因此我们可以使用Me来引用它。

  • 并不总是需要使用显式变量,您可以在表达式中使用引用,如下所示。

  • With语句保存对控件cb_capital的引用,您可以通过在With块中.来访问它。

  • 只要您使用文字(国家/地区名称(,就可以在Select Case语句中直接使用它们。关于您使用的逻辑,如果需要,您也可以省略Case "Malaysia", "Philippines", "Thailand":并使用Case Else

  • 您的数组定义n()c()根本没有使用。你使用了未十进制变量(n1n2c1-c6(。您应该在模块中使用Option Explicit以避免这种情况。

最新更新