使用动态变量以字符串形式调用范围

时间:2018-12-10 06:49:05

标签: excel vba

在研究如何根据标准将单元格添加到定义的范围时,我在这里得到了一个代码。这是代码:

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 :(得分:0)

如果您只需要rng2的总和,则可以使用Worksheetfunction.Sum()并将rng2用作参数。

Debug.print WorksheetFunction.Sum(rng2)

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