Мне нужно назвать мои заголовки в соответствии с элементами, которые у меня есть в поле со списком. Я в основном беру элементы из поля со списком и добавляю их в конец существующей строки заголовка на листе Excel, поэтому начинаю с первой пустой ячейки в строке заголовков. Однако я не могу перейти к следующей ячейке справа, которая будет следующим именем заголовка / столбца. Вот мой код на данный момент:

For i = 0 To ComboBox1.Items.Count - 1
    Dim s As String
    s = Convert.ToString(ComboBox1.Items(i))
    xlWorkSheet.Range(columnName & "1").Value = s
Next i

ColumnName - это следующий пустой заголовок в этой строке, столбец «L», поэтому оттуда я хотел бы заполнить эту ячейку, а затем перейти вправо к следующей ячейке.

0
Chrisetiquette 8 Сен 2016 в 19:30

5 ответов

Лучший ответ

Как предлагали другие, вы можете использовать Cells(), чтобы упростить итерацию. Обратите внимание, что пользователю / макросу нужен столбец номер , а не буква :

Изменить: как это вместо этого:

Dim s   As String
Dim myCol As Long
For i = 0 To ComboBox1.Items.Count - 1
    myCol = Range(columnName & 1).Column
    s = Convert.ToString(ComboBox1.Items(i))
    xlWorksheet.Cells(1, myCol + i).Value = s
Next i
0
BruceWayne 8 Сен 2016 в 18:04

Петли такие вчера:]
Вы можете установить сразу все заголовки, например:

Dim headers = ComboBox1.Items.Cast(Of Object).ToArray
xlWorkSheet.Range("A1").Resize(1, headers.Length).Value2 = headers

Кроме того, когда вы получите приемлемый ответ, вам следует установить рядом с ним зеленую галочку https://stackoverflow.com/tour

0
Community 23 Май 2017 в 12:08

Это то, что наконец сработало для меня

Dim headers = ComboBox1.Items.Cast(Of Object).ToArray
        xlWorkSheet.Range(columnName & "1").Resize(1, headers.Length).Value2 = headers
0
Chrisetiquette 8 Сен 2016 в 17:38
  • вы можете создать метод, который будет получать параметр номера столбца для запуска, используя счетчик, чтобы указать индекс столбца.
  • У меня проблема в том, что когда я добавляю пользовательский xlWorksheet.Cells(1, counter) в xlWorksheet.Cells(yourNewParameter, counter) в своей тестовой конфигурации, уже слишком поздно, потому что этот {{X2}} будет добавлен после например {{X3}} был создан.…

  • У меня проблема в том, что когда я добавляю пользовательский short в integer в своей тестовой конфигурации, уже слишком поздно, потому что этот Long будет добавлен после например {{X3}} был создан.…

  • У меня проблема в том, что когда я добавляю пользовательский xlWorksheet.Cells(1, counter) в {{X1}} в своей тестовой конфигурации, уже слишком поздно, потому что этот {{X2}} будет добавлен после например {{X3}} был создан.…

Код:

Private Sub AddHeaders(ByVal columnNumberToStart As Short)
    Dim counter As Short = columnNumberToStart
    For i = 0 To ComboBox1.Items.Count - 1
        xlWorksheet.Cells(1, counter) = ComboBox1.Items(i).ToString()
        counter += 1
    Next
End Sub
0
jonathana 8 Сен 2016 в 17:42

Это также сработало:

  For i = 0 To ComboBox1.Items.Count - 1
            Dim s As String
            myCol = xlWorkSheet.Range(columnName & 1).Column
            s = Convert.ToString(ComboBox1.Items(i))
            xlWorkSheet.Cells(1, myCol + i).Value = s
        Next i
0
Chrisetiquette 8 Сен 2016 в 17:52