2017-11-03 13 views
-1
Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged 
    Dim xlApp As Excel.Application 
    Dim xlWorkBook As Excel.Workbook 
    Dim xlWorkSheet As Excel.Worksheet 
    Dim i As Integer = 3 
    xlApp = New Excel.Application 
    xlWorkBook = xlApp.Workbooks.Open("C:\Users\JDoe\Documents\Ben's Project\Food.xlsx") 
    xlWorkSheet = xlWorkBook.Worksheets("Revision Dates") 
    If CheckBox2.Checked = True Then 
     Panel2.Show() 
     CheckBox1.Enabled = False 
     ListBox1.Show() 
     Label3.Show() 
     'istBox1.Items.Add(xlWorkSheet.Range("A1", "A14").Value) 
     Do 

      ListBox1.Items.Add(xlWorkSheet.Cells(i, 1)) 
      i += 1 
     Loop Until xlWorkSheet.Cells(i, 1).value = "01/01/01" 
    Else 
     Panel2.Hide() 
     ListBox1.Hide() 
     Label3.Hide() 
     CheckBox1.Enabled = True 
    End If 
End Sub 

양식 (checkbox2)에 체크 표시를하고 listbox1이 표시됩니다. A3 이후부터 "Revision Dates"워크 시트에 날짜 목록을 입력했습니다. 내 코드가 해당 열을 읽고 해당 값을 목록 상자로 전송하기를 원합니다. 코드를 실행할 때 오류가 발생하지 않지만 양식의 목록 상자에 날짜 (예 : 01/01/2018)가 표시되지 않고 "system._comobject"가 표시됩니다.VS2010 - 목록 대신 값 "system._comobject"가 표시됩니다.

제안 사항이 있으십니까?

감사합니다. Cells 멤버 호출에 의해 반환 된 Range 객체를 추가하는 것

+0

왜 값 대신 목록 상자에 셀을 추가합니까? – soohoonigan

+1

셀에는 많은 속성이 있으며'.Value'를 추가하십시오. –

답변

3
ListBox1.Items.Add(xlWorkSheet.Cells(i, 1)) 

. 세포의 Value을 추가하려는 경우 VB6/VBA/COM에서와 같은 방식으로 .net interop honors의 기본/암시 적 멤버 호출을 수행한다고 생각하지 않기 때문에 이에 대해 명시해야합니다.

ListBox1.Items.Add(xlWorkSheet.Cells(i, 1).Value) 
0

개체를 Excel 개체로 변환하려면 CType을 사용하십시오.

Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged 
    Dim xlApp As Excel.Application 
    Dim xlWorkBook As Excel.Workbook 
    Dim xlWorkSheet As Excel.Worksheet 
    Dim i As Integer = 3 
    xlApp = New Excel.Application 
    xlWorkBook = xlApp.Workbooks.Open("C:\Users\JDoe\Documents\Ben's Project\Food.xlsx") 
    xlWorkSheet = xlWorkBook.Worksheets("Revision Dates") 
    If CheckBox2.Checked = True Then 
     Panel2.Show() 
     CheckBox1.Enabled = False 
     ListBox1.Show() 
     Label3.Show() 
     'istBox1.Items.Add(xlWorkSheet.Range("A1", "A14").Value) 
     Do 

      ListBox1.Items.Add(CType(xlWorkSheet.Cells(i, 1), excel.Range).Value)) 
      i += 1 
     Loop Until CType(xlWorkSheet.Cells(i, 1), excel.Range).Value) = "01/01/01" 
    Else 
     Panel2.Hide() 
     ListBox1.Hide() 
     Label3.Hide() 
     CheckBox1.Enabled = True 
    End If 
End Sub