提问人:JR Stroik 提问时间:10/8/2023 最后编辑:B.GriffinJR Stroik 更新时间:10/9/2023 访问量:76
难以根据变量设置范围
struggling with setting a range based on a variable
问:
最终用户将从列表框中进行选择,该列表框将他们选择的行输出到 B,2 其值将指示起始行。他们还需要一种方法来输入行数,但我卡在了第一部分。任何帮助将不胜感激
我尝试使用Activecell.Offset()它运行良好,但很快意识到由于以下原因,它不会。计划表是它们开始的地方,但有 6 个页面需要粘贴不同的范围,因此在第一页之后,活动单元格将消失。
我希望做这样的事情:
选择当天的第一个版本,该版本指示起始行。.说 55...
然后是当天计划的 # 构建......比方说 5.
我需要第 57:61 行粘贴到工作表 2/
56:60 在另一个/
55:59 在不同的...等等......
这就是我目前所处的位置。
它回来了“需要 424 个对象”。
Sub Denest()
'
' Denest Macro
'
'
Sheets("Denest").Select
Rows("3:" & Rows.Count).ClearContents
Sheets("Incoming").Select
Dim var As Variant
var = Range("B1").Value
Dim nrange As Range
Set nrange = Range(var, var.Offset(2, 0).Rows("1:5")).EntireRow.Select <------error here
Selection.Copy
Sheets("Denest").Activate
Sheets("Denest").Rows("3:3").PasteSpecial Paste:=xlPasteAllUsingSourceTheme
Application.CutCopyMode = False
我显然在这里遗漏了一些东西......
答:
0赞
Black cat
10/8/2023
#1
- var 在你的代码中是一个数字,但你需要一个对象。
- 如果要单元格 B1 中第二行之后的五行
Sheets("Denest").Select
Rows("3:" & Rows.Count).ClearContents
Sheets("Incoming").Select
Dim var As Variant
Set var = Range("B1") 'edited
Dim nrange As Range
Set nrange = var.Offset(2,0).Rows("1:5").EntireRow.Select 'edited
'Set nrange = Range(var, var.Offset(2, 0).Rows("1:5")).EntireRow.Select <------error here
Selection.Copy
Sheets("Denest").Activate
Sheets("Denest").Rows("3:3").PasteSpecial Paste:=xlPasteAllUsingSourceTheme
Application.CutCopyMode = False
以上代码只是对发布的代码的更正。
编辑:这是执行以下操作的代码
- 在 shnames 数组中放置目标工作表名称
- 将要复制的工作表名称放入 orig 中
- 在原始工作表 B2 中,要复制的第一行
- 在原始工作表 C2 中,行数
结果:
原始工作表的 B2 行的 C2 行数被复制到 shnames 数组工作表中,行的开始从 B2 + 2 开始递增。
Sub multicopy()
shnames = Array("YY1", "xx1", "zz1")
Dim orig As Worksheet
Set orig = Worksheets("to copy") 'edited
Dim nrange As Range
For i = 0 To UBound(shnames)
With Sheets(shnames(i))
.Rows("3:" & Rows.Count).ClearContents
orig.Rows(orig.Range("B2")).Rows("1:" & orig.Range("C2")).Copy
.Rows(orig.Range("B2") + 2 + i).PasteSpecial Paste:=xlPasteAllUsingSourceTheme
End With
Next i
Application.CutCopyMode = False
End Sub
评论
0赞
JR Stroik
10/9/2023
这只是将数字 12 粘贴到第 3 行中
0赞
Black cat
10/9/2023
@jr stroik 请根据您在问题中的评论检查新版本。
0赞
JR Stroik
10/11/2023
你是个天才!感谢一百万次!该阵列工作正常。需要对电子表格进行一些更改,以便我可以轻松地将 orig.range 移动到方便的地方。另外,我可以添加工作表和其他范围!
评论