2015-07-20 73 views
0

我目前正在尝试创建一个宏,它将根据一些条件进行选择。但是,由于某些单元格为空,因此在选择当前点右侧的所有数据时遇到了问题。VBS Excel试图在宏中选择过去的空单元格

到目前为止,我有这样的事情:

rwcnt = WorksheetFunction.CountA(Range("A:A")) 
lastc = Cells(1, Columns.Count).End(xlToLeft).Column 
Dim i As Long 


For i = 2 To rwcnt 
    If IsNumeric(Cells(i, 1).Value) <> True Then 
     Range(Cells(i, 1).Address, Cells(i, 1).End(xlDown).Address).Select 
     Range(Selection, lastc).Select 
     Exit For 
    End If 
Next 

这让我对象的“_global”失败

以前的错误方法“范围”,我有最后一个范围行阅读:

Range(Selection, Selection.End(xlToRight)).Select 

我试过这个,因为我从左边开始,但是有些行有空白单元格,这是选择停止的地方。正因为如此,我试图从右边进入,找到我的最后一列,然后选择它。任何帮助将不胜感激!

+1

你想做什么?最后在单元格中选择它,然后退出for()循环?一旦你点击一个非数字单元格,它将退出该循环。你的范围错误在哪里?就我所知,您的lastc将继续发送到第1列。您将从最后一列开始('.columns.count'),并且向左移动直到出现空单元格。在返回A1之前,第1行是否有空单元格? – BruceWayne

+0

@ScottT你可以缩进第一行代码吗(在这行的开头添加4个空格)?这将使其格式正确。不幸的是,我无法编辑更改了这么少的字符。 – Jane

+0

我很困惑你想做什么 - 似乎它应该很容易,但你对你想要完成的事情的描述对我来说没有意义... –

回答

1
Range(Selection, lastc).Select 

将失败,因为对于此语法,范围期望开始范围和结束范围。 (参见https://msdn.microsoft.com/en-us/library/office/ff841254(v=office.15).aspx语法)

lastc是一个数字(最后使用的柱的具体数目)。

你想要使用像,而不是执行以下操作:

 Range(Selection, Cells(i, lastc)).Select 

的参数将取决于你要选择什么。

+0

这正是我所期待的,非常感谢! –

+0

不客气! – Jane