Vba 循环浏览excel范围并从范围填充文本框

Vba 循环浏览excel范围并从范围填充文本框,vba,excel,userform,ranged-loops,Vba,Excel,Userform,Ranged Loops,我目前正在excel中处理一个用户表单。它当前从数据库中提取一个列表,并将其粘贴到excel中,然后在您选择某人姓名时引用该数据以自动填充文本框 我遇到的问题是,我还想自动填充工作人员对某些系统的访问权限。基本上,电子表格包含公司内的所有员工以及他们对由2个单元格组成的特定系统的访问权限(系统和权利,K列和L列)。我已经定义了我希望使用的范围,但我现在被卡住了 如何让excel循环遍历范围,并将每个单元格(如K2和l2)中的数据“复制并粘贴”到userform中的文本框中。所以我想做的是选择某人

我目前正在excel中处理一个用户表单。它当前从数据库中提取一个列表,并将其粘贴到excel中,然后在您选择某人姓名时引用该数据以自动填充文本框

我遇到的问题是,我还想自动填充工作人员对某些系统的访问权限。基本上,电子表格包含公司内的所有员工以及他们对由2个单元格组成的特定系统的访问权限(系统和权利,K列和L列)。我已经定义了我希望使用的范围,但我现在被卡住了

如何让excel循环遍历范围,并将每个单元格(如K2和l2)中的数据“复制并粘贴”到userform中的文本框中。所以我想做的是选择某人的名字,它会自动浏览他们所有的访问详细信息,并自动在一些文本框中填入访问权限和权利

我目前的代码如下。 专用子cboStaffNumber_Change()

Dim rngCell As范围
Dim rngNumber As范围
长得一样长
暗淡的格兰赫斯特
暗淡的格兰杰和长的一样
暗淡的玻璃和长的一样
Dim RNG列作为范围
Dim RNGENTITLENT作为范围
Dim rngAccess As范围
设置rngNumber=范围(“A2:A”&lngStaffDataLastRow)
'选择员工时,填写员工姓名、OIA模板、部门、职务和WAP代码字段
如果bCboBool=False,则
如果Me.cboStaffNumber.ListIndex>0,则
对于rngNumber.Cells中的每个rngCell
如果rngCell.Value=Val(cboStaffNumber.Value),则
'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)
退出
如果结束
下一个rngCell
其他的
Me.cboStaffName.Value=“”
Me.txtOIATemplate.Value=“”
Me.txtDivision.Value=“”
Me.txtJobTitle.Value=“”
Me.txtWAP.Value=“”
如果结束
如果结束
对于lngRow=2到lngLastRow
如果rngNumber.Cells(lngRow,1).Value=Val(cboStaffNumber.Value),则
lngRangeStart=lngRow
退出
如果结束
下一个成长
'对于lngRow=LNGRANGSTART到lngLastRow+1
'如果rngNumber.Cells(lngRow,1).Value Val(cboStaffNumber.Value),则
'lngRangeEnd=lngRow
"退出
"完"
“下一个成长
'
'如果ln0那么
'lngRangeEnd=lngRangeEnd-1
"完"
'
'对于rngAccess=lngRangeStart到lngRangeEnd
'Set rngCell=lngrangetart.Cells(rngCell,11)
'对于RNGAAccess中的每个rngCell
'设置txtAccess1=rngCell
"退出
“下一次成功
bCboBool=False
端接头`
任何帮助都将不胜感激


谢谢

下面的内容将为您提供一些基础知识,让您可以根据员工的员工编号循环并使用每个系统和访问单元的值更新变量。您需要将[]中的值更改为表单中的命名值。它也在您定义的“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

员工是否可以多次出现在您获取系统和每个员工访问权限的数据中?是的,因此数据将包含相同的员工信息,但不同的系统和访问信息。最终可能会有100多条访问线,但有时也只有1-2条访问线。在这些行中,员工信息将保持不变,但系统和访问将发生变化。例如(系统1,访问1),然后下一行显示相同的员工信息(系统1,访问2)。由于员工可以访问多个系统,系统也可能发生变化。我所要做的就是将特定工作人员拥有的每个系统和访问组合放在一起,并自动填充userform的文本框
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