[英]excel vba : selected cells loop
想在 Excel VBA 中迭代选择中的每一行。
我有:
Dim rng As Range
Dim s As String
Set rng = Application.Selection
Debug.Print "c :" & rng.Address
这打印
c :$B$22:$C$29
如何从第 22 行到 29 行循环/解析出开始和结束行?
并在单独的 int 变量中获取开始和结束列?
在 Excel 中循环遍历一系列单元格的通用解决方案:
Sub LoopSelection()
Dim cel As Range
Dim selectedRange As Range
Set selectedRange = Application.Selection
For Each cel In selectedRange.Cells
Debug.Print cel.Address, cel.Value
Next cel
End Sub
从最左上角的单元格开始迭代,然后向下迭代。
仅直接遍历行。 我选择了不止一列,只想要外循环行。
Option Explicit
'go over selection, merge text in cells, so all in first column in every row.
Sub mergeCombine()
Dim rng As Range
Dim s As String
Set rng = Application.Selection
Debug.Print "c :" & rng.Address
s = rng.Column
Dim cRow As Range
Debug.Print "c :" & rng.Address & "||" & rng.AddressLocal
Dim ir, ic As Integer
For ir = 1 To rng.Rows.Count
Set cRow = rng.Rows(ir)
s = ""
For ic = 1 To rng.Columns.Count
s = s & cRow.Columns(ic).Text
Cells(cRow.Row, cRow.Columns(ic).Column).Formula = ""
If (ic + 1) <= rng.Columns.Count Then
s = s & " "
End If
Next
Cells(cRow.Row, cRow.Column).Formula = ""
Cells(cRow.Row, cRow.Column).Formula = s
Next
End Sub
它不适用于非连续选择。 计数与非连续不正确,您必须在 rng.Rows 中使用 For Each cRow 我自己没有尝试过,我的用例仅用于连续。 谢谢 Danny Holstein(2019 年的评论)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.