2012-02-13 48 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