首页 文章

使用动态变量将范围调用为字符串

提问于
浏览
1

我在这里得到了一个代码,同时研究如何根据标准将细胞添加到定义的范围 . 这是代码:

Dim rng1 As Range
Dim rng2 As Range
Dim c As Range
Set rng1 = Range("N1:N10")

 For Each c In rng1
' Add cells to rng2 if it is highlighted with a certain color
If c.Interior.ColorIndex = 43
    If Not rng2 Is Nothing Then
        Set rng2 = Union(rng2, c)
    Else
    ' the first valid cell becomes rng2
        Set rng2 = c
    End If
End If
Next

我计划对检索到的单元格做的是获取值并添加它们 . 我最初的计划是使用公式SUM(),其中和的范围是假定的rng2 . 为了让我把它放在这个公式中,我必须从检索范围中提取细胞 . 经过研究,我偶然发现了这段代码:

Function RangeToString(ByVal myRange As Range) As String
RangeToString = ""
If Not myRange Is Nothing Then
    Dim myCell As Range
    For Each myCell In myRange
        RangeToString = RangeToString & ";" & myCell.Value
    Next myCell
    'Remove extra comma
    RangeToString = Right(RangeToString, Len(RangeToString) - 1)
End If
End Function

通过以下功能和代码,我进行了一次测试,以检查它是否拾取了任何突出显示的单元格 . 可悲的是,它没有在我编码的测试单元上发布任何值 . 这是我做的示例代码:

Dim totalsum As String
 totalsum = RangeToString(rng2)
 ThisWorkbook.Sheets("format").Range("N" & counter).Value = totalsum

提前致谢!抱歉这个冗长的问题 .

1 回答

  • 0

    如果你需要的只是 rng2 的总和,你可以使用 Worksheetfunction.Sum() 并使用 rng2 作为参数 .

    Debug.print WorksheetFunction.Sum(rng2)
    

    无需解析要在工作表中使用的范围中每个单元格的各个值 .

相关问题