Замысловатое имя переменной для пользовательской формы - PullRequest
1 голос
/ 10 февраля 2020

Я пытаюсь упростить мой код для динамической проверки некоторых значений и обновления набора галочек.

Галочки являются своего рода таблицей, их имя "col" & number_of_column & type_of_data ie :

Col1PAM Col2PAM Col3PAM 
Col1RL   Col2RL   Col3RL

Я попробовал простой подход с for ... next, который работает: `

For i = 1 To 16

    If ThisWorkbook.Sheets("Setup").Cells(j + 2, i + 1) = 1 Then
        Me.Controls("Col" & i & "PAM").Value = True
        Else: Me.Controls("Col" & i & "PAM").Value = False
    End If

    If ThisWorkbook.Sheets("Setup").Cells(j + 3, i + 1) = 1 Then
        Me.Controls("Col" & i & "RL").Value = True
        Else: Me.Controls("Col" & i & "RL").Value = False
    End If

Next i

Но у меня много типов столбцов, и я попытался сделать тип столбцов Dynami c:

Dim Coltype1 As String
Dim coltype2 As String
Coltype1 = "PAM"
coltype2 = "RL"

For j = 1 To 2
    For i = 1 To 16

        If ThisWorkbook.Sheets("Setup").Cells(j + 2, i + 1) = 1 Then
            Me.Controls("Col" & i & ("Coltype" & j)).Value = True
            Else: Me.Controls("Col" & i & ("Coltype" & j)).Value = False
        End If

    Next i
Next j

Мой синтаксис неправильный, и после многих попыток я не могу понять, что будет правильным. Любой совет?

В дополнение к этому, я также попробовал подход for ... next для объявления моих переменных coltype1, coltype2 ..., но похоже, что вы не можете этого сделать?

Спасибо за любые советы!

1 Ответ

1 голос
/ 10 февраля 2020

Примерно так:

Dim arr(1 To 2) As String, ws As WorkSheet, i As Long, j As Long

Set ws = ThisWorkbook.Sheets("Setup")

arr(1) = "PAM"
arr(2) = "RL"

For j = 1 To 2
    For i = 1 To 16
        Me.Controls("Col" & i & arr(j)).Value = (ws.Cells(j + 2, i + 1) = 1)
    Next i
Next j
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...