Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 将多个范围的内容传递到另一个子区域_String_Vba_Range - Fatal编程技术网

String 将多个范围的内容传递到另一个子区域

String 将多个范围的内容传递到另一个子区域,string,vba,range,String,Vba,Range,我有以下代码,需要在几个范围内传递(rngSrc和rngTgt) 本质上,我需要一个sub,它只包含以下代码,然后在我的其他sub中使用不同的rngSrc和rngTgt集 For Each cell In rngSrc isGreen = False On Error Resume Next With cell.Interior.Gradient.ColorStops End With e = Err.Number On Error GoTo

我有以下代码,需要在几个范围内传递(rngSrc和rngTgt)

本质上,我需要一个sub,它只包含以下代码,然后在我的其他sub中使用不同的rngSrc和rngTgt集

   For Each cell In rngSrc
    isGreen = False
    On Error Resume Next
     With cell.Interior.Gradient.ColorStops
     End With
   e = Err.Number
  On Error GoTo 0
  If e = 0 Then
    For Each c In cell.Interior.Gradient.ColorStops
     arr = LongToRGB(c.Color)
     If arr(2) / IIf(arr(1) = 0, 1, arr(1)) > 1.25 And arr(2) / IIf(arr(3) = 0, 1, arr(3)) > 1.25 Then
        isGreen = True
        Exit For
     End If
 Next c
Else
   arr = LongToRGB(cell.Interior.Color)
   If arr(2) / IIf(arr(1) = 0, 1, arr(1)) > 1.25 And arr(2) / IIf(arr(3) = 0, 1, arr(3)) > 1.25 Then isGreen = True
 End If
 If isGreen Then
 If rng Is Nothing Then Set rng = cell.Offset(, -1).Resize(, 2) Else Set rng = Union(rng, cell.Offset(, -1).Resize(, 2))
End If
Next cell

 If Not rng Is Nothing Then rng.Copy: rngTgt.PasteSpecial xlPasteValues 
让我们在“DoIt”之后给你的潜艇打电话

那么您的“主”代码将是:

Option Explicit

Sub Con_CCC()
    Dim rngSrc As Range, rngTgt As Range

    Worksheets("Index Changes").Range("P7:P24").ClearContents

    Set rngSrc = Sheets("Output").Range("J13:J100")
    Set rngTgt = Sheets("Index Changes").Range("Y7")

    doit rngSrc, rngTgt '<--| call your 'DoIt()' sub passing 'rngSrc' and 'rngTgt' ranges
End Sub
选项显式
分包商(CCC)
变光rngSrc作为范围,rngTgt作为范围
工作表(“索引更改”)。范围(“P7:P24”)。ClearContents
设置rngSrc=板材(“输出”).范围(“J13:J100”)
设置rngTgt=图纸(“索引变化”)。范围(“Y7”)

Jeweller89,你通过了吗?@Jeweller89,如果你能给那些试图帮助你的人提供适当的反馈,那就太好了。非常感谢。
Option Explicit

Sub doit(rngSrc As Range, rngTgt As Range)
    Dim cell As Range
    Dim arr, rng As Range
    Dim c As ColorStop
    Dim isGreen As Boolean
    Dim e As Long

    For Each cell In rngSrc
        isGreen = False
        On Error Resume Next
        With cell.Interior.Gradient.ColorStops
        End With
        e = Err.Number
        On Error GoTo 0
        If e = 0 Then
            For Each c In cell.Interior.Gradient.ColorStops
                arr = LongToRGB(c.Color)
                If arr(2) / IIf(arr(1) = 0, 1, arr(1)) > 1.25 And arr(2) / IIf(arr(3) = 0, 1, arr(3)) > 1.25 Then
                    isGreen = True
                    Exit For
                End If
            Next c
        Else
            arr = LongToRGB(cell.Interior.Color)
            If arr(2) / IIf(arr(1) = 0, 1, arr(1)) > 1.25 And arr(2) / IIf(arr(3) = 0, 1, arr(3)) > 1.25 Then isGreen = True
        End If
        If isGreen Then
            If rng Is Nothing Then Set rng = cell.Offset(, -1).Resize(, 2) Else Set rng = Union(rng, cell.Offset(, -1).Resize(, 2))
        End If
    Next cell

    If Not rng Is Nothing Then rng.Copy: rngTgt.PasteSpecial xlPasteValues
End Sub
Option Explicit

Sub Con_CCC()
    Dim rngSrc As Range, rngTgt As Range

    Worksheets("Index Changes").Range("P7:P24").ClearContents

    Set rngSrc = Sheets("Output").Range("J13:J100")
    Set rngTgt = Sheets("Index Changes").Range("Y7")

    doit rngSrc, rngTgt '<--| call your 'DoIt()' sub passing 'rngSrc' and 'rngTgt' ranges
End Sub