2015-12-17 9 views
1

Я пытаюсь экспортировать 3 списка в файл excel. каждый список должен экспортироваться в другую ячейку.экспорт Listboxes в Excel

нет ошибки при отладке. , но он не работает и делает форму замораживания.

вот мой код

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    MsExcel = CreateObject("Excel.Application") 

    MsExcel.Workbooks.Open("C:\Users\User\Desktop\11.xlsx") 

    OffS = 0 

    For Each oItem In ListBox1.Items 

     MsExcel.Range("AB2").Offset(OffS, 0).Value = oItem 

     OffS = OffS + 1 

     For Each oItemm In ListBox2.Items 

      MsExcel.Range("AC2").Offset(OffS, 0).Value = oItemm 

      OffS = OffS + 1 

      For Each oItemmm In ListBox3.Items 

       MsExcel.Range("AD2").Offset(OffS, 0).Value = oItemmm 

       OffS = OffS + 1 

      Next oItemmm 

     Next oItemm 

    Next oItem 

    MsExcel.Visible = True 

End Sub 

ответ

1

Вы должны ун-гнезда петли!
В вашем коде цикл для ListBox2 будет выполняться для каждого элемента в ListBox1 и хуже для ListBox3!

И будьте осторожны, если вы вкладываете петлю, вам нужен различные элементы управления/индекс (здесь есть то же переменное для 3-х вложенных циклов)

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
MsExcel = CreateObject("Excel.Application") 
MsExcel.Workbooks.Open ("C:\Users\User\Desktop\11.xlsx") 

OffS = 0 
For Each oItem In ListBox1.Items 
    MsExcel.Range("AB2").Offset(OffS, 0).Value = oItem 
    OffS = OffS + 1 
Next oItem 

OffS = 0 
For Each oItemm In ListBox2.Items 
    MsExcel.Range("AC2").Offset(OffS, 0).Value = oItemm 
    OffS = OffS + 1 
Next oItemm 

OffS = 0 
For Each oItemmm In ListBox3.Items 
    MsExcel.Range("AD2").Offset(OffS, 0).Value = oItemmm 
    OffS = OffS + 1 
Next oItemmm 

MsExcel.Visible = True 
End Sub