Vba 选择sheet2和使用sheet1中的命令按钮查找最后使用的行的两种方法均失败
我一直在尝试使用命令按钮单击宏从Sheet1中选择Sheet2。宏的最后一部分用于查找最后使用的行(偏移量为1),并使用MsgBox返回行号。我尝试了两种选择sheet2的方法。但是,在这两种情况下,MsgBox返回的数字都是sheet1的最后一行,而不是sheet2的最后一行。我之所以知道这一点,是因为当我更改列A中包含数据的最后一个单元格(即,将数据放置在不同的单元格中)时,MsgBox会提供新值(偏移量为1) 我猜错误可能是我使用了单元格。查找。我知道有几种可能的方法可以确定最后使用的行,但从我读的单元格来看,Find方法是最可靠的。对我来说唯一明显的是,返回的行号来自Sheet1,而不是Sheet2。没有与此故障相关的错误消息 第一种方法是:Vba 选择sheet2和使用sheet1中的命令按钮查找最后使用的行的两种方法均失败,vba,excel,excel-2007,excel-2013,Vba,Excel,Excel 2007,Excel 2013,我一直在尝试使用命令按钮单击宏从Sheet1中选择Sheet2。宏的最后一部分用于查找最后使用的行(偏移量为1),并使用MsgBox返回行号。我尝试了两种选择sheet2的方法。但是,在这两种情况下,MsgBox返回的数字都是sheet1的最后一行,而不是sheet2的最后一行。我之所以知道这一点,是因为当我更改列A中包含数据的最后一个单元格(即,将数据放置在不同的单元格中)时,MsgBox会提供新值(偏移量为1) 我猜错误可能是我使用了单元格。查找。我知道有几种可能的方法可以确定最后使用的行,
Private Sub CommandButton1_Click()
Set wSheet = Worksheets("Sheet2")
wSheet.Activate
With wSheet
unusedRow = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Offset(1, 0).Row
End With
MsgBox (unusedRow)
End Sub
Private Sub CommandButton1_Click()
Application.Goto Reference:=Worksheets("Sheet2").Range("A1"), Scroll:=True
unusedRow = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Offset(1, 0).Row
MsgBox (unusedRow)
End Sub
第二种方法是:
Private Sub CommandButton1_Click()
Set wSheet = Worksheets("Sheet2")
wSheet.Activate
With wSheet
unusedRow = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Offset(1, 0).Row
End With
MsgBox (unusedRow)
End Sub
Private Sub CommandButton1_Click()
Application.Goto Reference:=Worksheets("Sheet2").Range("A1"), Scroll:=True
unusedRow = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Offset(1, 0).Row
MsgBox (unusedRow)
End Sub
有人能评论我代码中的错误吗?任何帮助都将不胜感激。我非常喜欢学习XL VBA
编辑:回复评论
非常感谢@Dan;你提到的这两本书我都读过。我还发现了另一个有用的讨论,我将挖掘链接并放在这里。我想我还没有完全适应语法,所以一些更微妙的变化仍然有点模糊。但是我已经明白了避免选择等的要点,尽管我只能偶尔到达那里。我想这是因为我经常使用宏录制器,它倾向于使用select系列
非常感谢@Tony-这是我需要的信息-宏现在运行良好,我对事情的理解稍微好一点。是的,我运行它时包含了Activate语句,它为我提供了Sheet1最后使用的行(偏移1);通过你的修订,我得到了第二张表的行号。再次感谢。Siddharth Rout在这里整理了一篇关于查找最后一行的文章:,这将帮助您解决此问题。另外,Chris Neilsen在这里写了一篇关于不使用select或activate的非常好的文章:我已经尝试了第一个例程,它很有效。但是,如果希望由
With
语句控制,则unusedRow=Cells
必须是unusedRow=.Cells
。如果在单元格
之前添加句点,则可以删除wSheet.Activate
。添加wSheet.Activate
后,您是否测试了此例程?