繁体   English   中英

"使用 ActiveCell.Offset(0, 1).Value 在 VBA 中选择多个单元格"

[英]Multiple cell selection in VBA using ActiveCell.Offset(0, 1).Value

我从 VBA 开始,必须做一个能够从选定单元格中检索值的程序,该单元格将用作参考。

当我选择一个具有Activecell<\/code>功能的单元格并使用ActiveCell.Offset(0, 1).Value<\/code>等时,我能够做到这一点。但是如何在同时选择多个单元格的同时做同样的事情并成为能够一次获取 1 个单元格值并执行Activecell.Offset...<\/code>然后识别第二个单元格值并检索正确的信息,依此类推。

使用宏记录器我看到当我选择多个值时它指向

Range("Y8,Y9,Y10,Y11").Select 'etc....

要么使用

Range(ActiveCell, ActiveCell.Offset(0, 1))

或者

ActiveCell.Resize(1, 2)

然后你可以这样使用它

For Each cell In Range(ActiveCell, ActiveCell.Offset(0, 1))
    Debug.Print cell.Value
Next cell

这相当于

Range(ActiveCell, ActiveCell.Offset(0, 1)).Select ' or ActiveCell.Resize(1, 2).Select
For i = 0 To 1
    Debug.Print ActiveCell.Offset(0, i)
Next i

我知道这有点晚了,OP 可能有解决方案,但我认为他想要的可以通过使用Selection来实现,例如:

Dim r As Range, c As Range

If TypeOf Selection Is Range Then Set r = Selection Else Exit Sub

For Each c In r
    '/* put the code you want here */
    Debug.Print c.Address
    DebUg.Print c.Offset(0,1).Value
Next

发布作为答案以防万一有人偶然发现相同的问题/问题/要求。

我今天只是想弄清楚这一点并遇到了这篇文章,所以我想我会用一个链接来更新它,该链接指向我找到一个简单答案的地方。

我从https://excelchamps.com/vba/range-offset/

Range(Range("A1").Offset(1, 1), Range("A1").Offset(5, 2)).Select

因此,使用 OP 希望使用 ActiveCell 作为起始位置并使用 Offset 选择任意范围,它看起来像这样:

Range(ActiveCell.Offset(1, 1), ActiveCell.Offset(5, 2)).Select

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM