Vba 从图纸中复制随机行,而不是每次在参数中定义一行
此代码在其当前设置中将所有图纸中的第5行复制到主图纸。我需要它在一个范围内随机抽取一行Vba 从图纸中复制随机行,而不是每次在参数中定义一行,vba,excel,Vba,Excel,此代码在其当前设置中将所有图纸中的第5行复制到主图纸。我需要它在一个范围内随机抽取一行 Sub test() Dim curRow As Integer Dim activeWorksheet As Worksheet Set activeWorksheet = ActiveSheet curRow = 1 For Each ws In ActiveWorkbook.Worksheets If Not ws.Name = activ
Sub test()
Dim curRow As Integer
Dim activeWorksheet As Worksheet
Set activeWorksheet = ActiveSheet
curRow = 1
For Each ws In ActiveWorkbook.Worksheets
If Not ws.Name = activeWorksheet.Name Then
ws.Range("5:6").Copy Destination:=activeWorksheet.Range(CStr(curRow) & ":" & CStr(curRow) + 1)
curRow = curRow + 1
End If
Next ws
End Sub
我尝试像这样编写随机代码,但失败了,出现运行时错误1004
Sub test()
Dim curRow As Integer
Dim activeWorksheet As Worksheet
Set activeWorksheet = ActiveSheet
curRow = 1
rndnum = Int((50 - 30 + 1) * Rnd + 1)
For Each ws In ActiveWorkbook.Worksheets
If Not ws.Name = activeWorksheet.Name Then
ws.Range("(rndnum):(rndnum+1)").Copy Destination:=activeWorksheet.Range(CStr(curRow) & ":" & CStr(curRow) + 1)
curRow = curRow + 1
End If
Next ws
End Sub
如果要使用范围内的变量,请执行以下操作:
'if you only want to use Rows
Range(var1 & ":" & var2)
'if you want to refer to a cell
Range(Cells(varRow,varColumn))
你很接近。一个行引用正在工作(尽管CStr转换是不必要的);另一个是畸形的
Sub test()
Dim curRow As Long, rndNum As Long, ws As Worksheet
With ActiveSheet
curRow = 1
rndNum = Int((50 - 30 + 1) * Rnd + 1)
For Each ws In .Parent.Worksheets
If Not ws.Name = .Name Then
ws.Range(rndNum & ":" & rndNum + 1).Copy _
Destination:=.Range(curRow & ":" & curRow + 1)
curRow = curRow + 2
End If
Next ws
End With
End Sub
我还添加了一个,以减少对分配给的var的冗余调用。
ws
var应该已经声明。我只想让它调出一个随机数,并将该随机数复制到一行,但是每当我尝试将一个随机数分配给一个变量并使用它时,它就会不断抛出此错误。将变量从ws.range中的字符串中取出只是为了添加可以将copy/paste语句缩减为ws.Rows(rndNum)。调整大小(2)。复制目标:=.Rows(curRow)
。而且最有可能的curRow
应该增加2,以避免覆盖在上一次迭代中粘贴的第二行这两个优点;特别是在增量上的捕获。非常感谢。(编辑应用)