Переберите диапазон 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