繁体   English   中英

excel vba:选定的单元格循环

[英]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.

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