Как я могу преобразовать строку в фактический заголовок метки формы в Microsoft Access VBA? - PullRequest
1 голос
/ 06 февраля 2020

Я пытался использовать значения массива для l oop в другом сценарии ios для динамического изменения значения заголовка надписей в форме. Я вставляю скриншот фрагмента, где мне удалось распечатать объединенное значение в Immediate Window. То, что в этом, выглядит точно так же, как мне нужно в моем коде. Однако, хотя я могу отладить эти сцепленные строковые значения в debug.print, после удаления debug.print все в моем коде идет не так, как надо. Мне чего-то здесь не хватает, но я уже потратил лучшую часть целого утра, пытаясь придумать, что это безрезультатно.

Я просто конкатенирую "Me.lbl" + элемент myProdArr + "Sales.Caption" + "=" + " элемент массива продаж / затрат / подлежащих оплате "

Я делаю это в попытке заменить необходимость напечатать каждый последний, чтобы я мог DRY код. Это вообще возможно или я сплю?

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

Есть идеи?

enter image description here

1 Ответ

3 голосов
/ 06 февраля 2020

Вы не можете объединить свойства, которые ссылаются на элемент управления (OK CallByName может), но вы можете объединить строки в коллекции Controls.

SalesCap = Me.Controls("lbl" & myProdArr(i) & "Sales").Caption
' result: SalesCap = Me.Controls("lblExtendedServiceSales").Caption
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...