Excel 循环浏览工作表并将值复制到范围
我尝试循环浏览所有工作表(前两个除外),从每个工作表复制一个值,然后将复制的值放入一列中。这就是我目前所拥有的。它没有给我一个错误信息,但它也不工作Excel 循环浏览工作表并将值复制到范围,excel,vba,Excel,Vba,我尝试循环浏览所有工作表(前两个除外),从每个工作表复制一个值,然后将复制的值放入一列中。这就是我目前所拥有的。它没有给我一个错误信息,但它也不工作 Sub copyGrades() Dim ws As Excel.Worksheet Dim grade As Double Dim rng As Range Dim rcell As Range Set rng = ThisWorkbook.Worksheets("Student List").Range
Sub copyGrades()
Dim ws As Excel.Worksheet
Dim grade As Double
Dim rng As Range
Dim rcell As Range
Set rng = ThisWorkbook.Worksheets("Student List").Range("H2:H174")
For Each ws In ActiveWorkbook.Worksheets
If ws.Name <> "Rubric" And ws.Name <> "Student List" Then
grade = ws.Range("E11").Value
For Each rcell In rng.Cells
rcell.Value = grade
Next rcell
End If
Next ws
End Sub
Sub-copyGrades()
将ws设置为Excel.Worksheet
暗等级为双倍
变暗rng As范围
变暗rcell As范围
设置rng=ThisWorkbook.工作表(“学生名单”).范围(“H2:H174”)
对于ActiveWorkbook.Worksheets中的每个ws
如果ws.Name“Rubric”和ws.Name“Student List”,那么
等级=ws.范围(“E11”)值
对于rng.单元格中的每个rcell
rcell.Value=等级
下一个rcell
如果结束
下一个ws
端接头
我想这就是我要做的(当然不是唯一的方法):
选项显式
次职系()
将ws设置为Excel.Worksheet
暗等级为双倍
变暗rng As范围
将计数设置为整数
计数=1
设置rng=ThisWorkbook.工作表(“学生名单”).范围(“H2:H174”)
对于ActiveWorkbook.Worksheets中的每个ws
如果ws.Name“Rubric”和ws.Name“Student List”,那么
等级=ws.范围(“E11”)值
rng.单元(计数,1)=等级
计数=计数+1
如果结束
下一个
端接头
我无法使嵌套循环正常工作,但我可以使用另一种方法解决它(查找工作表名称与给定列中的值之间的匹配)
当代码在技术上起作用时,你能准确地定义什么“不起作用”吗。你试图设计它做什么?现在,从每个工作表中取一个值,然后用该特定值填充整个范围。直到最后一张工作表。我可以想象这不是你想要的,但是你能解释一下你想要的是什么吗?我想你已经把你的手指放在这个问题上了。我试图将第一个复制的值放入列中的第一个单元格,将第二个复制的值放入第二个单元格,等等。但显然这不是我要做的。您不需要通过
rng
循环来使用这些值rng.Value=grade
应该可以。你有172张工作表可以从中复制吗?@Andras Dorko是的,我有足够的工作表可以从中复制你似乎认为嵌套循环是绝对必要的。。。
Option Explicit
Sub copyGrades()
Dim ws As Excel.Worksheet
Dim grade As Double
Dim rng As Range
Dim count As Integer
count = 1
Set rng = ThisWorkbook.Worksheets("Student List").Range("H2:H174")
For Each ws In ActiveWorkbook.Worksheets
If ws.Name <> "Rubric" And ws.Name <> "Student List" Then
grade = ws.Range("E11").Value
rng.Cells(count, 1) = grade
count = count + 1
End If
Next
End Sub
Sub copyGrades()
Dim ws As Excel.Worksheet
Dim rng As Range
Dim rcell As Range
Set rng = ThisWorkbook.Worksheets("Student List").Range("F2:F174")
For Each rcell In rng.Cells
For Each ws In ActiveWorkbook.Worksheets
If ws.Name = rcell.Value Then
rcell.Offset(0, 3).Value = ws.Range("E11").Value
End If
Next ws
Next rcell
End Sub