使用sheet1中的命令buttonselectsheet2和查找上次使用的行的两种方法均失败

我一直在尝试使用命令button单击macros从Sheet1中selectSheet2。 macros的最后一部分devise为查找最后使用的行(由1偏移)并使用MsgBox返回行号。 我已经尝试了两种selectsheet2的方法。 但是,在这两种情况下MsgBox返回的数字是sheet1的最后一个使用的行,而不是sheet2。 我知道这是因为当我更改列A中包含数据的最后一个单元格(即将数据放在不同的单元格中)时,MsgBox提供了新值(由1偏移)。

我猜这个错误可能在我使用Cells.Find的时候。 我知道有几种可能的方法来确定最后使用的行,但从我读过的Cells.Find方法是最可靠的。 唯一明显的是,返回的行号是来自Sheet1,而不是Sheet2。 没有与此故障相关的错误消息。

第一种方法是:

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的学习者。

编辑:对评论的回应

非常感谢@丹; 我已经读过你引用的那些作品。 还有另外一个有用的讨论,我发现我将挖掘链接并放在这里。 我认为我还没有把语法调整到一个相当基本的层次,所以一些更微妙的变化仍然有点模糊。 但是我有点避免select等,虽然我只能到达那里有时。 我想这是因为我经常使用倾向于使用select系列的macros录像机。

非常感谢@Tony – 这是我需要的信息 – macros现在正常工作,我理解的东西好一点。 是的,我使用Activate语句运行它,它给了我最后一个用于Sheet1的行(偏移1); 与您的修订我得到Sheet2的行号。 再次感谢。