2015-07-21 60 views
0

我正在開發Excel和VBA中的程序,並且當我嘗試更改列表框的選定屬性時出現運行時錯誤380。Excel VBA - listbox.selected屬性導致錯誤

該屬性由excel電子表格上的列確定,其中包含True或False值。我已將這些單元格的內容打印到控制檯,並可以確認true/false值是否正常工作,但是當我嘗試將這些值分配給我的listbox.selected屬性時,出現錯誤。

的功能是以下,任何幫助或建議將是該線路上發生多appreciated.Error:

ElementListBox.Selected(計數 - 1)= TaskListSheet.Cells(TaskListCellRef(任務,ref.Row)+數+ 1,TaskBreakdownColumnRefs(TaskBreakdownColumnHeaders.Included))值

Public Function LoadTier2SubTaskList(ByVal Task As Single, ByRef ElementListBox As Control) 

ElementListBox.Clear 
WorklistComboBox.Clear 


Dim count As Single 
Dim finished As Boolean 
Dim TaskListSheet As Worksheet 
Set TaskListSheet = TBSheet 
finished = False 

For count = 1 To 50 

Next count 

count = 1 
Dim TaskString As String 

Do While finished = False 
TaskString = TaskListSheet.Cells(TaskListCellRef(Task, ref.Row) + count + 1, TaskBreakdownColumnRefs(TaskBreakdownColumnHeaders.ElementOfWork)).Text 
If TaskString = vbNullString Then 
finished = True 

ElseIf TaskListSheet.Cells(TaskListCellRef(Task, ref.Row) + count + 1, TaskBreakdownColumnRefs(TaskBreakdownColumnHeaders.Tier)).Value = 2 Then 

ElementListBox.AddItem (TaskString) 
ElementListBox.Selected(count - 1) = TaskListSheet.Cells(TaskListCellRef(Task, ref.Row) + count + 1, TaskBreakdownColumnRefs(TaskBreakdownColumnHeaders.Included)).Value 
Debug.Print (TaskListSheet.Cells(TaskListCellRef(Task, ref.Row) + count + 1, TaskBreakdownColumnRefs(TaskBreakdownColumnHeaders.Included)).Value) 
End If 

count = count + 1 
Loop 

End Function 
+0

項目數count = 1到50'循環是幹什麼的?剛剛點數?然後計數回到1?所以你的'listbox.selected(count-1)'是'listbox.selected(0)'? – Raystafarian

+0

什麼是TaskListCellRef,ref,TaskBreakdownColunRefs和TaskBreakdownColumnHeaders?他們似乎沒有被定義爲在程序中的任何地方設置。 –

+0

與循環的好處,不知道爲什麼那裏,但刪除它沒有任何區別。 TaskListCellRef等是在代碼中的其他地方設置的單元引用。他們正在引用正確的單元格,我使用調試器測試過, –

回答

0

你需要將該值轉換爲一個布爾值?

ElementListBox.Selected(count - 1) = CBool(TaskListSheet.Cells(TaskListCellRef(Task, ref.Row) + count + 1, TaskBreakdownColumnRefs(TaskBreakdownColumnHeaders.Included)).Value) 

讓我們開始消除一些潛在的原因!

這是行不通的?

ElementListBox.Selected(count - 1) = true 

試試這個(更換您的代碼count=1Loop)...

count = 1 
Dim itemCount as Integer 
itemCount = 1 
Dim TaskString As String 

Do While finished = False 
TaskString = TaskListSheet.Cells(TaskListCellRef(Task, ref.Row) + count + 1, TaskBreakdownColumnRefs(TaskBreakdownColumnHeaders.ElementOfWork)).Text 
If TaskString = vbNullString Then 
finished = True 

ElseIf TaskListSheet.Cells(TaskListCellRef(Task, ref.Row) + count + 1, TaskBreakdownColumnRefs(TaskBreakdownColumnHeaders.Tier)).Value = 2 Then 

ElementListBox.AddItem (TaskString) 
ElementListBox.Selected(itemCount - 1) = CBool(TaskListSheet.Cells(TaskListCellRef(Task, ref.Row) + count + 1, TaskBreakdownColumnRefs(TaskBreakdownColumnHeaders.Included)).Value) 
Debug.Print (TaskListSheet.Cells(TaskListCellRef(Task, ref.Row) + count + 1, TaskBreakdownColumnRefs(TaskBreakdownColumnHeaders.Included)).Value) 
itemCount = itemCount +1 
End If 

count = count + 1 
Loop 

注意添加ITEMCOUNT變量來算的listbox

+0

不幸,不幸運行 –

+0

哪條線會出錯?此外,看這裏似乎暗示有這個錯誤的相當多的原因... http://stackoverflow.com/questions/1979281/what-c​​auses-this-error-runtime-error-380-invalid-property-值 –

+0

該行,ElementListBox.Selected(count - 1)= TaskListSheet.Cells(TaskListCellRef(Task,ref.Row)+ count + 1,TaskBreakdownColumnRefs(TaskBreakdownColumnHeaders.Included))值 –