Vba xlDown未按预期工作
我遵循了教程 为了处理按钮动作。我希望每次单击按钮时都将数据写入新行,但代码要么覆盖现有数据,要么将数据写入新行(并再次覆盖) 代码:Vba xlDown未按预期工作,vba,excel,Vba,Excel,我遵循了教程 为了处理按钮动作。我希望每次单击按钮时都将数据写入新行,但代码要么覆盖现有数据,要么将数据写入新行(并再次覆盖) 代码: Private Sub cmdUnesiUBazu_click() Sheet1.Activate Range("B2").End(xlDown).Offset(1, 0).Select ' want to start write from C2 cell ActiveCell.Value = ActiveCell.Offset(-1
Private Sub cmdUnesiUBazu_click()
Sheet1.Activate
Range("B2").End(xlDown).Offset(1, 0).Select ' want to start write from C2 cell
ActiveCell.Value = ActiveCell.Offset(-1, 0).Value + 1
ActiveCell.Offset(0, 1).Value = txtSifraOsobe.Value
ActiveCell.Offset(0, 2).Value = txtImeIPrezime.Value
ActiveCell.Offset(0, 3).Value = txtAdresa.Value
ActiveCell.Offset(0, 4).Value = cboGrad.Value
ActiveCell.Offset(0, 5).Value = cboDrzava.Value
ActiveCell.Offset(0, 7).Value = txtDatumRodjenja.Value
End Sub
最好直接引用单元格,而不是选择单元格并引用
ActiveCell
。监视
看起来您正试图创建一个唯一标识符(ID)来引用您的记录。但是您正在将1添加到下面的空单元格中:ActiveCell.Value=ActiveCell.Offset(
1,0)。Value+1
而应该将1添加到上面的单元格值ActiveCell.Value=ActiveCell.Offset(
-1,0)。Value+1
Sheet1.Activate
With Range("B2").End(xlDown).Offset(1, 0)
.Value = .Offset(-1, 0).Value + 1
.Offset(0, 1).Value = txtSifraOsobe.Value
.Offset(0, 2).Value = txtImeIPrezime.Value
.Offset(0, 3).Value = txtAdresa.Value
.Offset(0, 4).Value = cboGrad.Value
.Offset(0, 5).Value = cboDrzava.Value
.Offset(0, 7).Value = txtDatumRodjenja.Value
End With
如果要避免
激活
和逐个单元格的偏移
,可能会更整洁,例如:
Dim ws As Worksheet
Dim rng1 As Range
Set ws = Sheets(1)
Set rng1 = ws.Cells(Rows.Count, "B").End(xlUp)
rng1.Offset(1, 1).Resize(1, 7) = Array(Me.txtSifraOsobe, Me.txtImeIPrezime, Me.txtAdresa, Me.cboGrad, Me.cboDrzava, , Me.txtDatumRodjenja)
我不能复制这个-代码对我来说很好,尽管使用实际引用而不是
ActiveCell
和Offset
会更好。我不理解行ActiveCell.Value=ActiveCell.Offset(1,0)。Value+1
。由于您使用的是范围(“B2”).End(xlDown)
,因此这可能是列中的最后一个单元格。为什么要从下一个空行获取数据。除非您确定它不是空的如果您想获取列B中的最后一行,您可能应该使用范围(“B”和Rows.Count).End(xlUp).Offset(1,0).选择@nightcrawl23与您的解决方案一起工作。谢谢。实际上,在我的项目中是偏移量(-1,0)。值+1,当我在这里复制代码时,出现了一些错误。但它的行为仍然很奇怪,当并没有任何填充的数据时,它会写入第一行,然后继续覆盖它。@mgkP若您发布一个数据的屏幕截图,我将解释它为什么这样做。