Переберите диапазон Excel и заполните текстовые поля из диапазона

В настоящее время я работаю над пользовательской формой в Excel. В настоящее время он извлекает список из базы данных и вставляет его в Excel, а затем ссылается на эти данные для автозаполнения в текстовых полях при выборе чьего-либо имени.

У меня проблемы с тем, что я также хочу автоматически заполнить доступ к определенным системам, которые будут у сотрудника. По сути, электронная таблица содержит весь персонал компании и доступ, который они имеют к определенным системам, состоящим из 2 ячеек (Система и права, столбцы K и L). Я определил диапазон, с которым хочу работать, но сейчас застрял.

Как получить Excel, чтобы пройти через диапазон и "Копировать и вставить" данные из каждой ячейки (например, K2 и l2) в текстовые поля в пользовательской форме. Поэтому я хочу выбрать чье-то имя, и оно автоматически проверит все их данные о доступе и автоматически заполнит некоторые текстовые поля с этим доступом и правами.

Текущий код у меня в соответствии с ниже. Частный Sub cboStaffNumber_Change()

Dim rngCell As Range
Dim rngNumber As Range
Dim lngRow As Long
Dim lngRangeStart As Long
Dim lngRangeEnd As Long
Dim lngLastRow As Long
Dim rngColumn As Range
Dim rngEntitlement As Range
Dim rngAccess As Range

Set rngNumber = Range("A2:A" & lngStaffDataLastRow)

'Fills in the Staff Name, OIA Template, Division, Job Title and WAP Code fields when a staff member is selected
    If bCboBool = False Then
        If Me.cboStaffNumber.ListIndex > 0 Then
            For Each rngCell In rngNumber.Cells
                If rngCell.Value = Val(cboStaffNumber.Value) Then
'                    lngRangeStart = rngCell.Row
                    bCboBool = True
                    Me.cboStaffName = rngCell.Offset(0, 1)
                    Me.txtOIATemplate = rngCell.Offset(0, 9)
                    Me.txtDivision = rngCell.Offset(0, 7)
                    Me.txtJobTitle = rngCell.Offset(0, 2)
                    Me.txtWAP = rngCell.Offset(0, 3)
                    Exit For
                End If
            Next rngCell
        Else
            Me.cboStaffName.Value = ""
            Me.txtOIATemplate.Value = ""
            Me.txtDivision.Value = ""
            Me.txtJobTitle.Value = ""
            Me.txtWAP.Value = ""
        End If
    End If

For lngRow = 2 To lngLastRow
    If rngNumber.Cells(lngRow, 1).Value = Val(cboStaffNumber.Value) Then
        lngRangeStart = lngRow
        Exit For
    End If
Next lngRow

'    For lngRow = lngRangeStart To lngLastRow + 1
'        If rngNumber.Cells(lngRow, 1).Value <> Val(cboStaffNumber.Value) Then
'            lngRangeEnd = lngRow
'            Exit For
'        End If
'    Next lngRow
'
'    If lngRow <> 0 Then
'        lngRangeEnd = lngRangeEnd - 1
'    End If
'
'    For rngAccess = lngRangeStart To lngRangeEnd
'        Set rngCell = lngRangeStart.Cells(rngCell, 11)
'            For Each rngCell In rngAccess
'                Set txtAccess1 = rngCell
'                Exit For
'    Next rngAccess



    bCboBool = False




End Sub`

Любая помощь будет принята с благодарностью.

Спасибо

1 ответ

Ниже следует дать вам основы для циклического прохождения и обновления переменной со значениями каждой ячейки "Система" и "Доступ" для сотрудника на основе их численности. Вам нужно изменить значения в [] на именованные значения в вашей форме. Он также работает от исходного диапазона, который вы определили как "rngNumber". Я не проверял это, но на первый взгляд это должно работать. Дайте мне знать, как это происходит.

strSystem = ""
strAccess = ""
For Each rngCell In rngNumber.Cells
     If rngCell.Value = Val(cboStaffNumber.Value) Then
          strSystem = strSystem & rngCell.Offset(0,10).value & ", "
          strAccess = strAccess & rngCell.Offset(0,11).value & ", "
     End If
Next rngCell
If len(strSystem) > 0 then
     strSystem = Left(strSystem, len(strSystem)-1)
End If
If len(strAccess) > 0 then
     strAccess = Left(strAccess , len(strAccess)-1)
End If
Me.[txtSystemBox] = strSystem 
Me.[txtAccessBox] = strAccess
Другие вопросы по тегам