2017-07-08 152 views
0

我有两个替补:VBA Excel中的ComboBox错误381

1)

Sub InitializeComboBoxes() 

Dim lastRowOfPositions As Integer, lastRowOfShifts As Integer 

Application.ScreenUpdating = False 

' POPULATE POSITIONS COMBOBOX 
lastRowOfPositions = Module2.last_row("Menu", "_positions") 
ActiveWorkbook.Worksheets("Menu").PositionsComboBox.List = ActiveWorkbook.Worksheets("Menu").Range(Cells(2, Range("_positions").Column), Cells(lastRowOfPositions, Range("_positions").Column)).Value 
ActiveWorkbook.Worksheets("Menu").PositionsComboBox.ListIndex = 0 

End Sub 

2)

Sub InitializeEmployeeComboBox() 

Dim lastRowOfEmployees As Integer 
Dim sheetName As String 
Dim ws As Worksheet 

sheetName = ActiveWorkbook.Worksheets("Menu").ShiftsComboBoxRemove.Value 
Set ws = ActiveWorkbook.Worksheets(sheetName) 

Application.ScreenUpdating = False 

Dim helperText As String 

helperText = sheetName & "Name" 
lastRowOfEmployees = Module2.last_row(sheetName, sheetName & "Name") 

ActiveWorkbook.Worksheets("Menu").EmployeesComboBox.List = ws.Range(ws.Cells(2, ws.Range(helperText).Column), ws.Cells(lastRowOfEmployees, ws.Range(helperText).Column)).Value 
ActiveWorkbook.Worksheets("Menu").EmployeesComboBox.ListIndex = 0 

End Sub 

的问题是: 1)ActiveWorkbook.Worksheets("Menu").PositionsComboBox.List = ActiveWorkbook.Worksheets("Menu").Range(Cells(2, Range("_positions").Column), Cells(lastRowOfPositions, Range("_positions").Column)).Value - 这是形式第一子和它工作得很好,没有任何问题

2)ActiveWorkbook.Worksheets("Menu").EmployeesComboBox.List = ws.Range(ws.Cells(2, ws.Range(helperText).Column), ws.Cells(lastRowOfEmployees, ws.Range(helperText).Column)).Value - 从第二子。

对我来说,他们是同一段代码,只是这里我使用范围从不同的板材,与(1)其中,我使用范围从同一张

第一个工作正常,第二次给了错误381 帮助请,因为我找不到错误导致它

+0

你检查什么'ws.Range(ws.Cells(2 ws.Range(helperText).COLUMN),WS。单元格(lastRowOfEmployees,ws.Range(helperText).Column)).value'作为值返回? – UGP

+0

我不能完全理解它,但我隐约记得我曾经有过类似的问题,这在代码的位置有其原因。尝试从标准代码模块运行代码。 – Variatus

回答

0

这似乎有一个问题,当我尝试填充组合框与其他片范围。我工作围绕它通过创建一个数组,使用范围值填充它,然后分配数组的ComboBox