2012-02-13 51 views
0

在我的代碼中,我選擇excel文件將它們添加到列表框中,然後運行一些代碼來替換列表中所有excel文件上的某個單元格。每次它改變了Excel單元格文件,它會使用VB.NET Listbox selectedindex

Me.ListBox2.SelectedIndex = Me.ListBox2.SelectedIndex + 1 

去下一個在列表框中但是,當它到達列表的末尾它給了我一個錯誤。我怎麼讓我的列表框知道它到達了最後。

回答

1

把支票是這樣的:

if Me.ListBox2.SelectedIndex + 1 < Me.ListBox2.items.count then 
    Me.ListBox2.SelectedIndex + = 1 
End if 
+0

似乎沒有工作,它不選擇下一個項目,但停留在第一個項目。 – PandaNL 2012-02-13 10:20:24

+0

有一個輕微的錯誤,請嘗試更新的答案。 – Harsh 2012-02-13 10:21:50

+1

使用+ = 1將其縮短一點。 ;) – Stefan 2012-02-13 10:31:25

0

我想我會做一個針對/通過項目的每個/下一循環是這樣的:

For Each ListItem As Object In ListBox2.Items 

    'Set Active item as selected 
    ListBox2.SelectedItem = ListItem 

    'manipulate file 
    UpdateExcelFile(ListItem.ToString) 

Next 
+0

看起來確實像一個更清潔的方法,將研究這一點。 – PandaNL 2012-02-14 10:10:48

-1

只是爲了好玩。您可以在不使用IF/END IF的情況下執行此操作。
以下代碼將選定的索引移動到下一個項目,直到它到達列表框的末尾。

ListBox1.SelectedIndex += Math.Abs(CInt(ListBox1.SelectedIndex < ListBox1.Items.Count - 1)) 
+0

我不會推薦使用這種方法。只是張貼它來顯示替代方法來做到這一點。 ;) – Stefan 2012-02-13 10:45:59

+0

哦,有人不喜歡不可讀的oneliner代碼。 ;) 好吧。 – Stefan 2012-02-13 13:42:58