Excel 分别选择多个连续范围

Excel 分别选择多个连续范围,excel,range,vba,Excel,Range,Vba,我正在设计一个宏,允许用户选择他们想要检查错误的数据集的特定范围(在这种情况下,如果调查的受访者为多个问题选择了相同的选项)。为了让用户更容易看到他们正在检查的范围(以便VBA可以知道要使用哪些范围),我对它们进行了如下颜色编码: Set flRange = Application.InputBox("Select the ranges you want to check for flatlining. (To select non-contiguous ranges, hold down CT

我正在设计一个宏,允许用户选择他们想要检查错误的数据集的特定范围(在这种情况下,如果调查的受访者为多个问题选择了相同的选项)。为了让用户更容易看到他们正在检查的范围(以便VBA可以知道要使用哪些范围),我对它们进行了如下颜色编码:

Set flRange = Application.InputBox("Select the ranges you want to check for flatlining. (To select non-contiguous ranges, hold down CTRL when moving between ranges)", , , , , , , 8)
flRange.Select
flRange.Cells.Interior.Color = RGB(255, 222, 117)
然后,我使用此颜色确定是否应分析范围:

If Cells(1, x).Interior.Color = RGB(255, 222, 117) Then
但是,如果用户选择了相邻的多个范围(应单独分析),VBA将把它们作为同一范围的一部分读取(因为它们具有相同的颜色)

这是我找到的最好的方法,允许用户输入多个非连续范围,以使用相同的方法进行分析,但我不知道如何解决这个问题。如果有人对如何更好地编写这个宏有什么建议,我将不胜感激


编辑:蒂姆和约书亚解决了这个问题。谢谢你的帮助

您可以分别明确地在每个范围内循环,而不是依赖颜色来区分它们

例如:

Sub GetRanges()

    Dim flRange As Range
    'Dim v_Ranges As Variant
    Dim i As Integer

    'Tell code to continue if there is an error
    On Error Resume Next

    Set flRange = Application.InputBox("Select the ranges you want to check for flatlining. (To select non-contiguous ranges, hold down CTRL when moving between ranges)", , , , , , , 8)

    'Resume normal error handling
    On Error GoTo 0

    'Check to ensure the range is set
    If flRange Is Nothing Then Exit Sub

    'Loop through the separate ranges
    For Each rngArea In flRange.Areas
        Debug.Print rngArea.Address
    Next rngArea

End Sub
如果我运行宏并选择单元格A1:A8和单元格C4:C13,则输出为:

$A$1:$A$8
$C$4:$C$13
如果不知道你对每个范围具体做了些什么,我就不能潜得更深,所以我现在将把它保持在这个一般水平


我还冒昧地为您处理了“取消”按钮。以前,如果用户在弹出InputBox时选择了“取消”,则会出现VBA错误。这是通过检查以确保在继续之前设置了范围来说明错误的原因,如果未设置范围,则代码将退出子例程。

或对flRange中的每个rng使用
进行循环。
rng
区域将是一个
range
对象,代表整个范围的特定部分。我甚至不知道它是否存在。我不经常处理不连续的范围,我已经更新了我的代码以纳入您的建议。