我使用以下代码在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]我得到一个错误。关于我哪里出错的任何想法?
答案 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