【问题标题】:How can I convert a string to an actual form label caption in Microsoft Access VBA?如何在 Microsoft Access VBA 中将字符串转换为实际的表单标签标题?
【发布时间】:2020-05-22 23:28:41
【问题描述】:

我尝试使用数组值循环不同的场景来动态更改表单中标签的标题值。我正在插入一个 sn-p 的屏幕截图,其中我成功地将连接值打印到即时窗口。其中的内容与我在代码中需要的内容完全一样。但是,虽然我可以 debug.print 这些连接的字符串值,但一旦我删除 debug.print,我的代码中的所有内容都会横向移动。我在这里遗漏了一些东西,但我已经花了整个上午的大部分时间试图思考它是什么而没有结果。

我只是连接“Me.lbl”+myProdArr 的元素+“Sales.Caption”+“=”+“销售/成本/应付数组的元素 >"

我这样做是为了代替输入每个最后一个的需要,以便我可以干掉代码。这是可能的还是我在做梦?

Dim SalesCap, CostCap, PayableCap As String
Dim SalesObj, CostObj, PayableObj As Object

For i = LBound(myProdArr) To UBound(myProdArr)
    SalesCap = "Me.lbl" & myProdArr(i) & "Sales.Caption"
    CostCap = "Me.lbl" & myProdArr(i) & "Cost.Caption"
    PayableCap = "Me.lbl" & myProdArr(i) & "Payable.Caption"
    If Me.DealType = "Used" Then
        Debug.Print SalesCap & " = " & """" & myUsedSalesArr(i) & """"
        Debug.Print CostCap & " = " & """" & myUsedCostArr(i) & """"
        Debug.Print PayableCap & " = " & """" & myUsedPayArr(i) & """"
    Else
        Debug.Print SalesCap & " = " & """" & myNewSalesArr(i) & """"
        Debug.Print CostCap & " = " & """" & myNewCostArr(i) & """"
        Debug.Print PayableCap & " = " & """" & myNewPayArr(i) & """"
    End If
Next i

有什么想法吗?

【问题讨论】:

  • 你能把你的代码贴在一个代码块中,而不仅仅是截图吗?
  • 需要注意的是,你做的是一个包含代码的字符串。从字符串到可以运行的代码的唯一方法是使用 VBAProject 模型动态编辑代码。默认情况下,从不需要、不鼓励和禁用此功能。
  • 您要做的是遍历控件集合并对控件本身进行操作。请参阅此示例:stackoverflow.com/questions/3344649/…
  • 我应该自己使用实际控件的数组吗?那行得通吗?而不是试图将所有内容都切碎并仅仅更改控件名称的非重复部分?
  • 控件集合就是这个东西,它已经存在了。你只是使用它。 docs.microsoft.com/en-us/office/vba/api/access.controls

标签: arrays vba ms-access


【解决方案1】:

您不能连接引用控件的属性(OK CallByName 可以),但您可以连接 Controls 集合中的字符串。

SalesCap = Me.Controls("lbl" & myProdArr(i) & "Sales").Caption
' result: SalesCap = Me.Controls("lblExtendedServiceSales").Caption

【讨论】:

  • 这对我有用 - 有点。无论出于何种原因(我可能没有看到我的语法滥用),我无法使用变量让代码按预期运行,而是使用 Me.Controls("lbl" & myProdArr(i) & "Sales" ).Caption 效果很好。所有很好的答案,以及关于控件集合的非常有用和有见地的信息。
猜你喜欢
  • 1970-01-01
  • 2017-11-13
  • 2015-08-24
  • 2014-12-28
  • 2013-08-14
  • 2021-11-07
  • 2023-04-09
  • 1970-01-01
  • 2011-03-21
相关资源
最近更新 更多