繁体   English   中英

使用vb.net在Excel中右移到下一个单元格

[英]Move right to next cell in Excel using vb.net

我需要根据组合框中的项目命名标题。 我基本上是从组合框中获取项目,并将其添加到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”列,因此我要从那里填充该单元格,然后向右移动到下一个单元格。

正如其他人所建议的那样,您可以使用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

昨天的循环是如此:]
您可以使用以下命令一次设置所有标题:

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

另外,当您获得可接受的答案时,您应该选中它旁边的绿色对勾https://stackoverflow.com/tour

  • 您可以创建一个方法,该方法将获取要启动的列号参数,并使用counter指向列索引。
  • 如果标题不在第1行中,则添加该行的另一个参数,并将xlWorksheet.Cells(1, counter)替换为
    xlWorksheet.Cells(yourNewParameter, counter)

  • 使用shortinteger数据类型,而不是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

这终于对我有用

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

这也起作用:

  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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM