我有一个excel文档中的范围,我需要将其提取到Visual Basic中的列表框中

时间:2012-03-13 04:06:17

标签: excel vba

我在excel文档中有一个范围,我需要将其提取到列表框中。我可以通过.txt文件执行此操作,但实际上更愿意从excel中获取信息。怎么样?

我正在使用Visual Studio 2010,到目前为止我的代码是:

Public class1 Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim objXLApp As Excel.Application
Dim intLoopCounter As Integer

objXLApp = New Excel.Application

With objXLApp
    .Workbooks.Open("C:\report.xls")
    .Workbooks(1).Worksheets(1).Select()

    For intLoopCounter = 1 To CInt(.ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row)
        List1.AddItem.Range("A" & intLoopCounter)
    Next intLoopCounter

    .Workbooks(1).Close(False)
    .Quit()
End With

objXLApp = Nothing
End Sub 

当我构建这个程序时,我得到两个错误;

  1. 语句在命名空间
  2. 中无效
  3. 预期声明的结尾(我确实放了最终类,但它增加了更多的错误“)

2 个答案:

答案 0 :(得分:0)

我不是真的做VB,但我认为你应该用以下方法打破循环的绑定:

var data = .ActiveSheet.Range("A1:A"&.ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row).Value2

List1.DataSource = data
List1.DataBind()

答案 1 :(得分:0)

您可以尝试(假设您希望将整个Range对象绑定到列表而不仅仅是显示的值。

For intLoopCounter = 1 To CInt(.ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row)
    List1.AddItem .ActiveSheet.Range("A" & intLoopCounter)
Next intLoopCounter

修改

此外,您应该使用Set objXLApp = New Excel.Application。您错过了set关键字。

这也不是您在VBA中声明类的方式。你创建一个新类,就像你创建一个新模块一样。该类在属性窗格中命名。

这也不是VBA中事件的处理方式。如果要处理button click Button1事件,则事件处理程序必须类似于

Private Sub Button1_Click()

End Sub

它必须与对象名称和正在处理的事件的名称相同。它也必须位于用户表单的代码页上,并且没有参数。 VBA在这方面确实缺乏。

希望这有帮助!