【问题标题】:How to increment active cell in excel vba 4 steps?如何在 excel vba 4 步骤中增加活动单元格?
【发布时间】:2018-03-16 07:46:10
【问题描述】:

我有一个将数据输入工作表的代码。因此,一旦输入数据,表格就会被重置,并且可以输入新的数据项。但是这个新的数据项应该以每次位置变化的方式进入工作表。如下图,当我使用表格输入数据时,它会从B1填充到D4。现在我要求为下一个条目选择的单元格是F1。即,下一组数据必须从F1 填充到H4

我尝试了ActiveCell.Offset(0, 4).Select,但它会将我带到单元格T2,然后下次转到U2 等等

这是我的代码:

Private Sub CommandButton1_Click()
Dim p As Long
Dim j As Integer
Dim erow As Long
Dim b As Integer
'erow = Sheet3.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
a = number
For p = 2 To number + 1

    Cells(p, 2) = Controls("txtBox" & p - 1).Text
    Cells(p, 3) = Controls("txtBox" & p + number - 1).Text
   Cells(p, 4) = Controls("txtBox" & p + number + number - 1).Text

Next p


'Cells(3, i) = TextBox1.Value
'Cells(4, i) = TextBox2.Value
'Cells(5, i) = TextBox3.Value
'Cells(3, i + 1) = TextBox4.Value
'Cells(3, i + 1) = TextBox4.Value

Call resetForm
ActiveCell.Offset(0, 4).Select

End Sub

文本框是动态创建的

我的表格是这样的:

需要修改什么?

【问题讨论】:

  • 您遗漏了代码的其他一些重要部分。比如,在你使用 ActiveCell.Offset(0, 4).Select 之前,ActiveCell 是什么。事实上,你应该避免同时使用ActiveCellSelect
  • 最初我会将 B3 设置为活动单元格

标签: vba excel


【解决方案1】:

我建议如下:
它在第 2 行中找到最后使用的列,然后向右移动 2 以获得新数据块的第一个单元格。请注意,对于第一个数据块,我们只需向右移动一次。

此示例将一些示例数据添加到下一个空块:

Option Explicit

Private Sub CommandButton1_Click()
    Dim ws As Worksheet
    Set ws = Sheet3

    Dim LastCol As Long
    LastCol = ws.Cells(2, ws.Columns.Count).End(xlToLeft).Column 'get the last used column in row 2

    Dim FirstCellToWrite As Range
    If LastCol = 1 Then
        Set FirstCellToWrite = ws.Cells(2, LastCol + 1) 'first data block is different
    Else
        Set FirstCellToWrite = ws.Cells(2, LastCol + 2)
    End If

    'write example values
    FirstCellToWrite.Value = 1
    FirstCellToWrite.Offset(0, 1).Value = 2
    FirstCellToWrite.Offset(0, 2).Value = 3
    FirstCellToWrite.Offset(1, 0).Value = 4
    FirstCellToWrite.Offset(1, 1).Value = 5
    FirstCellToWrite.Offset(1, 2).Value = 6
    FirstCellToWrite.Offset(2, 0).Value = 7
    FirstCellToWrite.Offset(2, 1).Value = 8
    FirstCellToWrite.Offset(2, 2).Value = 9
End Sub

【讨论】:

  • 但每次文本框的数量可能会有所不同...数据会有所不同
  • 当然你需要调整它来使用你的文本框的数据。这只是一个例子。我给你留下了一些工作,这是为了给你指明解决方案的方向。
  • 这是在到处更新相同的数据
  • 实际上用户将输入一组数据。然后输入的下一组数据应该在下一个位置
  • 它的工作......谢谢你..我的小错误发生了......现在它已纠正并工作,..谢谢
猜你喜欢
  • 1970-01-01
  • 2015-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多