2015-03-18 164 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