0
我有一個用戶窗體在工作表上移動對象(員工姓名),以便管理人員可以將員工移動到不同的部門(工作表上的不同行組)。我遇到的問題是,當我定義屬於員工姓名的初始行,然後通過Selection.Cut和Selection.Insert Shift:= xlDown移動該行時,我無法再調用員工行的新位置,因爲這已經改變,任何後續的代碼行仍然可以識別userform代碼中標識的初始僱員行。定義變量(長)在子程序內更改未更新
Dim UserRow As Long
Dim UserMatrix As String
Dim CCIRow As Long
Dim CCIRange As String
Dim CEMRow As Long
Dim CEMRange As String
Dim MANRow As Long
Dim MANRange As String
UserRow = Application.WorksheetFunction.Match(UserName, Range("A1:A300"), 0)
UserMatrix = "B" & UserRow
CCIRow = Application.WorksheetFunction.Match("CCI/MDI", Range("A1:A300"), 0) + 1
Let CCIRange = "A" & CCIRow
CEMRow = Application.WorksheetFunction.Match("CE/Marketing", Range("A1:A300"), 0) + 1
Let CEMRange = "A" & CEMRow
MANRow = Application.WorksheetFunction.Match("Management", Range("A1:A300"), 0) + 1
Let MANRange = "A" & MANRow
OTHRow = Application.WorksheetFunction.Match("Other", Range("A1:A300"), 0) + 1
Sheet3.Rows(UserRow).Select
Selection.Cut
If UserDept = "CCI/MDI" Then
Sheet3.Rows(CCIRow).Select
Selection.Insert Shift:=xlDown
Sheet3.Range(UserMatrix).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Clear
Sheet3.Range("MATRIX_ROW").Select
Selection.Copy
Sheet3.Range(UserMatrix).Select
Selection.PasteSpecial PASTE:=xlPasteAllUsingSourceTheme, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Sheet3.Range(CCIRange).Select
Range(ActiveCell, Cells(ActiveCell.End(xlDown).Row, ActiveCell.End(xlToRight).Column)).Sort _
key1:=Range(CCIRange), order1:=xlAscending
End If
If UserDept = "CE/Marketing" Then
Sheet3.Rows(CEMRow).Select
Selection.Insert Shift:=xlDown
Sheet3.Range(UserMatrix).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Clear
Sheet3.Range("MATRIX_ROW").Select
Selection.Copy
Sheet3.Range(UserMatrix).Select
Selection.PasteSpecial PASTE:=xlPasteAllUsingSourceTheme, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Sheet3.Range(CEMRange).Select
Range(ActiveCell, Cells(ActiveCell.End(xlDown).Row, ActiveCell.End(xlToRight).Column)).Sort _
key1:=Range(CEMRange), order1:=xlAscending
End If
If UserDept = "Management" Then
Sheet3.Rows(MANRow).Select
Selection.Insert Shift:=xlDown
Sheet3.Range(UserMatrix).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Clear
Sheet3.Range("MATRIX_ROW").Select
Selection.Copy
Sheet3.Range(UserMatrix).Select
ActiveCell.Offset(0, 1).Select
Selection.PasteSpecial PASTE:=xlPasteAllUsingSourceTheme, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Sheet3.Range(MANRange).Select
Range(ActiveCell, Cells(ActiveCell.End(xlDown).Row, ActiveCell.End(xlToRight).Column)).Sort _
key1:=Range(MANRange), order1:=xlAscending
End If
我的問題:有沒有我可以在子程序中更新定義維度變量(即點心)的價值,因爲它改變了什麼辦法?謝謝你的幫助!
THANK YOU!移動後重置維度正是解決了我的問題!在我開發的應用程序中有很多事情發生,而這個小snipet讓我非常沮喪。我欠你一杯啤酒,我的朋友! – markddelorme
我已經發布了我的評論作爲答案,以防其他人在將來遇到同樣的問題。 – YowE3K