我需要根据组合框中的项目命名我的标题。我基本上从组合框中获取项目并将它们添加到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 :(得分:0)
正如其他人所建议的那样,您可以使用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
答案 1 :(得分:0)
昨天循环如此:] 您可以使用以下内容一次设置所有标题:
Dim headers = ComboBox1.Items.Cast(Of Object).ToArray
xlWorkSheet.Range("A1").Resize(1, headers.Length).Value2 = headers
另外,当你得到可接受的答案时,你应该检查它旁边的绿色检查https://stackoverflow.com/tour
答案 2 :(得分:0)
如果标题不在第1行,那么添加另一个行参数和
用
替换xlWorksheet.Cells(1, counter)
xlWorksheet.Cells(yourNewParameter, counter)
。
使用short
或integer
数据类型而不是Long
。
您无需为xlWorksheet.Cells(1,
counter)
创建变量
缩短你的代码。
代码:
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
答案 3 :(得分:0)
这最终对我有用
Dim headers = ComboBox1.Items.Cast(Of Object).ToArray
xlWorkSheet.Range(columnName & "1").Resize(1, headers.Length).Value2 = headers
答案 4 :(得分:0)
这也有效:
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