将范围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。请帮助
答案 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