Excel 将range1设置为range2
将范围1等同于范围2 尝试使range2值=range1值 范围1定义的值,例如:A1=2、A2=3、A3=8Excel 将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将继续生成随机数和循环,直到
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,其中一种方法是提出一些想法/问题,并尝试提出一些工作程序。非常感谢。