【问题标题】:Move right to next cell in Excel using vb.net使用 vb.net 向右移动到 Excel 中的下一个单元格
【发布时间】:2016-09-08 16:30:12
【问题描述】:

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

【问题讨论】:

  • 尝试使用单元格,例如:xlWorkSheet.Cells(1,(i+1)).Value = s。我看不到你在哪里增加 columnName 变量。
  • 我想这就是我的问题所在。我可以在标题行(columnName)中找到下一个空单元格,但我不知道如何递增到右侧的下一个单元格。
  • 这样的东西应该返回最后一列LastCol = xlWorkSheet.Cells(1, xlWorkSheet.Columns.Count).End(xlToLeft).Column。在你的 for 循环中增加它以在工作表的末尾添加新的标题。
  • 我已经这样做了,这就是 columnName,它的最后一列。我只是不知道如何增加该值。
  • 我认为正在发生的事情是该行正在变为xlWorkSheet.Range(1).Value,而1 不是一个范围。

标签: vb.net excel visual-studio


【解决方案1】:

正如其他人所建议的,您可以使用Cells() 来帮助更轻松地进行迭代。请注意,用户/宏需要列 number,而不是 letter

编辑:这是怎么回事:

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

【讨论】:

  • 函数中的范围不起作用“在这种情况下无法访问,因为它是朋友”
  • @Chrisetiquette - ...什么?它在changeToNumber = Range(...?? 处抛出错误?编辑:啊,我在 VBA 中制作了这个,您可能需要针对 VB.net 进行调整。对不起!
  • 您的编辑只是将下一列更改为组合框中的最后一项
  • @Chrisetiquette 怎么样,我忘了加i
【解决方案2】:

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

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

另外,当你得到可接受的答案时,你应该检查它旁边的绿色检查https://stackoverflow.com/tour

【讨论】:

    【解决方案3】:

    这就是最终对我有用的方法

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

    【讨论】:

      【解决方案4】:
      • 您可以创建一个获取列号参数的方法 首先,使用 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
      

      【讨论】:

        【解决方案5】:

        这也有效:

          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
        

        【讨论】:

          猜你喜欢
          • 2012-08-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-15
          相关资源
          最近更新 更多