2015-03-18 132 views
0

我目前正在使用excel内的用户窗体。它目前从数据库中提取一个列表并将其粘贴到excel中,然后在选择某个名称时引用该数据以在文本框中自动填充。通过excel范围循环并从范围填充文本框

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

如何获取excel来遍历范围,并将每个单元格(例如K2和l2)中的数据复制并粘贴到用户窗体中的文本框中。所以我想要发生的是选择某个人的姓名,它会自动通过他们的所有访问详细信息,并自动填充一些文本框与访问和权利。

我现在的代码是根据以下。 私人小组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` 

任何帮助,将不胜感激。

感谢

+0

工作人员可以在获取每位工作人员的系统和访问权限的数据中多次出现? – 2015-03-19 00:20:34

+0

是的,所以数据将包含相同的工作人员信息,但系统和访问信息不同。 它可能最终成为100多行访问权限,但有时也只有1-2行访问权限。在这些方面,员工信息将保持不变,但系统和访问权限会发生变化。 EG(系统1,访问1)然后是具有相同员工信息(系统1,访问2)的下一行。随着员工可以访问多个系统,系统也可能发生变化。我想要做的就是将每个系统加上特定员工拥有的访问组合并自动填充用户表单的文本框 – Oliver 2015-03-19 00:22:58

回答

0

下面应该给你的基础知识来遍历和更新与每个系统和接入小区基于他们的员工数量,工作人员的值的变量。您需要将[]中的值更改为表单中的指定值。它也可以在你定义'rNumber'的原始范围内工作。我没有测试过,但一目了然它应该工作。让我知道事情的后续。

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 
+0

真棒谢谢你! – Oliver 2015-03-19 01:25:10