获取范围中的第一个和最后一个项目

时间:2016-07-15 15:25:06

标签: vba excel-vba excel

我使用以下代码在VBA中定义了一个范围

    Range("D3").Select
    Set x = Range(Selection, Selection.End(xlDown))

我现在要做的是为除第一个和最后一个项目之外的所有元素执行一个函数。

所以代码看起来像这样:

    Range("D3").Select
    Set x = Range(Selection, Selection.End(xlDown))

 For Each cell In x

       'if not first or last item

       'Do something        
    Next cell

但是我似乎可以获得第一个和最后一个项目。如果我做的事情 x [1]的x [1]我得到一个错误。关于我哪里出错的任何想法?

3 个答案:

答案 0 :(得分:1)

试试这个

Set x = ... ''<--- your initial range setting, whatever it may be 
For Each cell In x.offset(1).Resize(x.Rows.Count - 2)
       '... your code
Next cell

答案 1 :(得分:0)

如果您需要在计数器逻辑中使用控件,为什么要使用a而不是for / to逻辑?

  Range("D3").Select
    Set x = Range(Selection, Selection.End(xlDown))
TotalRows= Selection.Rows.Count
 For Counter=1 to TotalRows
 If CounterRow <> 1 and CounterRow <> TotalRows Then
       'if not first or last item

       'Do something        
 End If
    Next Counter

答案 2 :(得分:0)

另一种方法是,如果要对单元格值进行更改,则将范围值加载到数组中。

然后进行更改并将结果写回。

Sub ChangeValues()

Dim x() As Variant
Dim myItem As Long

Range("D3").Select

x = Range(Range("D3"), Selection.End(xlDown))

    For myItem = LBound(x, 1) + 1 To UBound(x, 1) - 1
       'if not first or last item
       'Do something
       ActiveCell.Offset(myItem - 1, 0) = x(myItem, 1) * 10
    Next myItem

End Sub