将范围1等同于范围2

时间:2019-02-09 17:15:53

标签: excel vba

将范围1等同于范围2

试图使range2值= range1值 Range1值定义为例如:A1 = 2,A2 = 3,A3 = 8

Sub Test()

Set Rng1 = Range("A1:A3")

Set Rng2 = Range("B1:B3")

        Do Until Rng2.Value = Rng1.Value
            Rng2.Value = "=RANDBETWEEN(1,10)"
        Loop

End Sub

Rng2将继续生成随机数并循环,直到B1 = 2,B2 = 3,B3 = 8

现在请继续获取运行时错误13。请帮助

2 个答案:

答案 0 :(得分:1)

您可以直接设置彼此相等的范围(RangeX.Value = RangeY.Value)并完成设置。还想知道是否还有其他未共享的上下文。您尝试采用的方法使我认为这不是您项目的全部范围

Sub (Test)

With ThisWorkbook.Sheets("Sheet1")
    .Range("B1:B3").Value = .Range("A1:A3").Value
End With

End Sub

答案 1 :(得分:1)

也许OP想要做类似的事情

Sub Test()

Dim Rng1 As Range, Rng2 As Range, sngCell As Range
Dim eq As Long, i As Long


    Application.ScreenUpdating = False

    Set Rng1 = Range("A1:A3")
    Set Rng2 = Range("B1:B3")
    Rng2.Value = "=RANDBETWEEN(1,10)"

    eq = 0
    Do
        eq = 0
        Rng2.Calculate
        For Each sngCell In Rng1
            If sngCell.Value = sngCell.Offset(0, 1).Value Then
                eq = eq + 1
            End If
        Next
        i = i + 1
        If i > 10000 Then Exit Do  ' Just to avoid an endless loop
    Loop Until eq = 3

    Debug.Print "Loops: " & i

End Sub

只需手动将1到9之间的一些整数放入A1:A3,然后代码将一些随机整数放入B1:B3。然后代码重复将随机整数放入B1:B3中,直到我们拥有与A1:A3中相同的整数。我不知道这有什么好处:-)也许OP想要测试某种概率函数,例如随机变量或期望值(对不起,我不知道它的正确英文术语)。

这里是使用数组的版本

Sub TestArray()
Dim v1(1 To 3) As Byte
Dim v2(1 To 3) As Byte

Dim eq As Byte
Dim i As Long, k As Long

    v1(1) = 6
    v1(2) = 4
    v1(3) = 2

    Do
        eq = 0
        For k = 1 To 3
            v2(k) = WorksheetFunction.RandBetween(1, 10)
        Next k
        For k = 1 To 3
            If v1(k) = v2(k) Then
                eq = eq + 1
            End If
        Next k
        i = i + 1
        If i > 10000 Then Exit Do
    Loop Until eq = 3
    Debug.Print "Loops: " & i

End Sub