Excel 将range1设置为range2

Excel 将range1设置为range2,excel,vba,Excel,Vba,将范围1等同于范围2 尝试使range2值=range1值 范围1定义的值,例如: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将继续生成随机数和循环,直到

将范围1等同于范围2

尝试使range2值=range1值 范围1定义的值,例如: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。请帮助

您可以直接设置彼此相等的范围(
RangeX.Value=RangeY.Value
)并完成。还想知道是否还有其他一些上下文没有共享。你试图采取的方法让我觉得这不是你项目的全部范围

Sub (Test)

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

End Sub

您可以直接将范围设置为彼此相等(
RangeX.Value=RangeY.Value
)即可。还想知道是否还有其他一些上下文没有共享。你试图采取的方法让我觉得这不是你项目的全部范围

Sub (Test)

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

End Sub

也许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

也许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

Rng2.Value=Rng1.Value的结果不是布尔值。这就是你得到RTE 13的原因。如果这是一个问题,因为这不是一个可以用多个单元格Rng2回答的问题。值生成一个2d数组,与Rng1相同。值以有趣的方式设置2个范围,使其彼此相等。为什么要使用
randbween
?我觉得这里缺少了一些背景。如果没有,那么您需要做的似乎就是
Rng2.Value=Rng1.Value
并且您是doneUrdearboy,请在两者之间选择rand,否则直到循环没有任何循环。只是为了练习VBA。熟能生巧perfect@JohnD5718美好的这正是我一年多前学习VBA的方式。我的建议是看看这里的其他问题,尝试回答它们,并阅读其他人的解决方案,看看您的尝试可以如何改进。Rng2.Value=Rng1.Value的结果不是布尔值。这就是你得到RTE 13的原因。如果这是一个问题,因为这不是一个可以用多个单元格Rng2回答的问题。值生成一个2d数组,与Rng1相同。值以有趣的方式设置2个范围,使其彼此相等。为什么要使用
randbween
?我觉得这里缺少了一些背景。如果没有,那么您需要做的似乎就是
Rng2.Value=Rng1.Value
并且您是doneUrdearboy,请在两者之间选择rand,否则直到循环没有任何循环。只是为了练习VBA。熟能生巧perfect@JohnD5718美好的这正是我一年多前学习VBA的方式。我的建议是看看这里的其他问题,试着回答它们,阅读其他人的解决方案,看看你的尝试可以如何改进。我不知道这意味着什么,但我还是投了赞成票。哈哈。这是一篇奇怪的帖子,我真的很好奇OP在阅读你的解决方案后现在到底想做些什么。非常感谢Storax。Sub Test(),它可以工作。只想测试/练习Do-Until循环函数。与randbetween配对,否则就不会循环。我不知道这意味着什么,但我还是投票了。哈哈。这是一篇奇怪的帖子,我真的很好奇OP在读了你的解决方案后现在到底想做什么。非常感谢Storax。Sub Test(),它可以工作。只想测试/练习Do-Until循环函数。与randbetween配对,否则不会循环。感谢Urderboy分享。实际上,这不是一个项目。我的目的是学习VBA,其中一种方法是提出一些想法/问题,并尝试提出一些工作程序。谢谢你的分享。实际上,这不是一个项目。我的目的是学习VBA,其中一种方法是提出一些想法/问题,并尝试提出一些工作程序。非常感谢。