Как исправить InvalidArgument = Значение «3» недопустимо для «индекса».Имя параметра: индекс при экспорте элементов списка в Excel - PullRequest
0 голосов
/ 17 февраля 2019

Я настраиваю программу и хочу сохранить элементы списка в Excel, но всегда сохраняется ошибка при сохранении моих элементов.

Я использую Windows 7 и Visual Basic 2010. Естьфактически 3 столбца и неожиданное количество строк, так как я запускаю программу меню еды, поэтому количество подпунктов неожиданно.

Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As 
    System.EventArgs) Handles Button13.Click
    Try
        Me.Cursor = Cursors.WaitCursor
        Dim ExcelApp As Object, ExcelBook As Object
        Dim ExcelSheet As Object
        Dim i As Integer
        Dim j As Integer

        ExcelApp = CreateObject("Excel.Application")
        ExcelBook = ExcelApp.WorkBooks.Add
        ExcelSheet = ExcelBook.WorkSheets(1)

        With ExcelSheet
            For i = 1 To Me.ListView1.Items.Count
                .cells(i, 1) = Me.ListView1.Items(i - 1).Text
                For j = 1 To ListView1.Columns.Count - 1
                    .cells(i, j + 1) = Me.ListView1.Items(i - 1).SubItems(j).Text
                Next
            Next
        End With
        ExcelApp.Visible = True
        ExcelSheet = Nothing
        ExcelBook = Nothing
        ExcelApp = Nothing
        Me.Cursor = Cursors.Default
    Catch ex As Exception
        Me.Cursor = Cursors.Default
        MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Information)
    End Try
    Exit Sub
End Sub

Я ожидаю, что оно отобразится в программе Excel со следующим спискомэлементы, но есть только ошибка, поэтому она не может быть продолжена.

1 Ответ

0 голосов
/ 17 февраля 2019

Пожалуйста, попробуйте следующий обновленный код:

Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
    Try
        Me.Cursor = Cursors.WaitCursor
        Dim ExcelApp As Object, ExcelBook As Object
        Dim ExcelSheet As Object
        Dim i As Integer
        Dim j As Integer

        ExcelApp = CreateObject("Excel.Application")
        ExcelBook = ExcelApp.WorkBooks.Add
        ExcelSheet = ExcelBook.WorkSheets(1)

        With ExcelSheet
        For i = 0 To Me.ListView1.Columns.Count - 1
           .cells(1, i + 1) = Me.ListView1.Columns(i).Text
        Next
        For i = 0 To Me.ListView1.Items.Count - 1
           For j = 0 To Me.ListView1.Items(i).SubItems.Count - 1
              .cells(i + 2, j + 1) = Me.ListView1.Items(i).SubItems(j).Text
           Next
        Next
        End With
        ExcelApp.Visible = True
        ExcelSheet = Nothing
        ExcelBook = Nothing
        ExcelApp = Nothing
        Me.Cursor = Cursors.Default
    Catch ex As Exception
        Me.Cursor = Cursors.Default
        MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Information)
    End Try
    Exit Sub
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...