2017-11-03 10 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 

私のフォーム(チェックボックス2)でチェックボックスをチェックしてから、リストボックス1が表示されます。私は、A3以降の "Revision Dates"ワークシートに日付のリストを入力しました。私は自分のコードがその列を読んで、それらの値をリストボックスに転送したい。 コードを実行するとエラーは発生しませんが、フォームのリストボックスに日付(例:01/01/2018)ではなく "system._comobject"が表示されます。VS2010 - Listboxは値の代わりに "system._comobject"を表示します

提案がありますか?

ありがとうございます。 Cellsメンバーの呼び出しによって返さRangeオブジェクトを追加しています

+0

なぜ値の代わりにセルをリストボックスに追加していますか? – soohoonigan

+1

セルには多くのプロパティがあり、 '.Value' –

答えて

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

。セルのValueを追加する場合は、VB6/VBA/COMのように、デフォルトの/暗黙のメンバ呼び出しを行うことはできません。

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

CTypeを使用して、オブジェクトをExcelオブジェクトに変換します。

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 
関連する問題